BACKUP DATABASE { database_name | @database_name_var }
TO <backup_device> [ ,...n ]
[ <MIRROR TO clause> ] [ next-mirror-to ]
[ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ]
[;]
Backing Up Specific Files or Filegroups
BACKUP DATABASE { database_name | @database_name_var }
<file_or_filegroup> [ ,...n ]
TO <backup_device> [ ,...n ]
[ <MIRROR TO clause> ] [ next-mirror-to ]
[ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ]
[;]
Creating a Partial Backup
BACKUP DATABASE { database_name | @database_name_var }
READ_WRITE_FILEGROUPS [ , <read_only_filegroup> [ ,...n ] ]
TO <backup_device> [ ,...n ]
[ <MIRROR TO clause> ] [ next-mirror-to ]
[ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ]
[;]
BACKUP LOG { database_name | @database_name_var }
TO <backup_device> [ ,...n ]
[ <MIRROR TO clause> ] [ next-mirror-to ]
[ WITH { <general_WITH_options> | <log-specific_optionspec> } [ ,...n ] ]
[;]
Truncating the Transaction Log (breaks the log chain)
BACKUP LOG { database_name | @database_name_var }
WITH { NO_LOG | TRUNCATE_ONLY }
[;]
<backup_device>::=
{
{ logical_device_name | @logical_device_name_var }
| { DISK | TAPE } =
{ 'physical_device_name' | @physical_device_name_var }
}
<MIRROR TO clause>::=
MIRROR TO <backup_device> [ ,...n ]
<file_or_filegroup>::=
{
FILE = { logical_file_name | @logical_file_name_var }
| FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
}
<read_only_filegroup>::=
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
<general_WITH_options> [ ,...n ]::=
--Backup Set Options
COPY_ONLY
| DESCRIPTION = { 'text' | @text_variable }
| NAME = { backup_set_name | @backup_set_name_var }
| PASSWORD = { password | @password_variable }
| [ EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
| NO_LOG
--Media Set Options
{ NOINIT | INIT }
| { NOSKIP | SKIP }
| { NOFORMAT | FORMAT }
| MEDIADESCRIPTION = { 'text' | @text_variable }
| MEDIANAME = { media_name | @media_name_variable }
| MEDIAPASSWORD = { mediapassword | @mediapassword_variable }
| BLOCKSIZE = { blocksize | @blocksize_variable }
--Data Transfer Options
BUFFERCOUNT = { buffercount | @buffercount_variable }
| MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }
--Error Management Options
{ NO_CHECKSUM | CHECKSUM }
| { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }
--Compatibility Options
RESTART
--Monitoring Options
STATS [ = percentage ]
--Tape Options
{ REWIND | NOREWIND }
| { UNLOAD | NOUNLOAD }
--Log-specific Options
{ NORECOVERY | STANDBY = undo_file_name }
| NO_TRUNCATE
-
DATABASE
-
指定一个完整数据库备份。如果指定了一个文件和文件组的列表,则仅备份该列表中的文件和文件组。在进行完整数据库备份或差异数据库备份时,SQL Server 会备份足够的事务日志,以便在还原备份时生成一个一致的数据库。
注意: 对 master 数据库,只能采用完整数据库备份。
-
LOG
-
指定仅备份事务日志。该日志是从上一次成功执行的日志备份到当前日志的末尾。必须创建完整备份,才能创建第一个日志备份。
注意: 执行典型日志备份后,如果没有指定 WITH NO_TRUNCATE 或 COPY_ONLY,某些事务日志记录将变为不活动状态。一个或多个虚拟日志文件中的所有记录变为不活动状态后,日志将被截断。如果日志在常规日志备份后未被截断,则可能是某些操作延迟了日志截断。
-
{
database_name
|
@
database_name_var }
-
备份事务日志、部分数据库或完整的数据库时所用的源数据库。如果作为变量 (@database_name_var) 提供,则可以将该名称指定为字符串常量 (@database_name_var = database name) 或字符串数据类型(ntext 或 text 数据类型除外)的变量。
注意: 不能备份数据库镜像伙伴关系中的镜像数据库。
-
<file_or_filegroup> [
,...
n ]
-
只能与 BACKUP DATABASE 一起使用,用于指定某个数据库文件或文件组包含在文件备份中,或某个只读文件或文件组包含在部分备份中。
-
FILE
={
logical_file_name
|
@
logical_file_name_var }
-
文件或变量的逻辑名称,其值等于要包含在备份中的文件的逻辑名称。
-
FILEGROUP
= {
logical_filegroup_name
|
@
logical_filegroup_name_var }
-
文件组或变量的逻辑名称,其值等于要包含在备份中的文件组的逻辑名称。在简单恢复模式下,只允许对只读文件组执行文件组备份。
注意: 如果数据库的大小和性能要求使得进行数据库备份不切实际,则考虑使用文件备份。
-
n
-
一个占位符,表示可以在逗号分隔的列表中指定多个文件和文件组。数目没有限制。
-
-
READ_WRITE_FILEGROUPS [
, FILEGROUP = {
logical_filegroup_name
|
@
logical_filegroup_name_var } [
,...
n ] ]
-
指定部分备份。部分备份包括数据库中的所有读/写文件:主文件组和任何读/写辅助文件组,以及任何指定的只读文件或文件组。
-
READ_WRITE_FILEGROUPS
-
指定在部分备份中备份所有读/写文件组。如果数据库是只读的,则 READ_WRITE_FILEGROUPS 仅包括主文件组。
重要提示: 使用 FILEGROUP 而不是 READ_WRITE_FILEGROUPS 显式列出读/写文件组将会创建文件备份。
-
FILEGROUP = {
logical_filegroup_name
|
@
logical_filegroup_name_var }
-
只读文件组或变量的逻辑名称,其值等于要包含在部分备份中的只读文件组的逻辑名称。有关详细信息,请参阅本主题前面的“<file_or_filegroup>”。
-
n
-
一个占位符,表示可以在逗号分隔的列表中指定多个只读文件组。
-
-
TO <backup_device> [
,...
n ]
-
表示伴随的备份设备组是一个非镜像媒体集,或者是镜像媒体集中的第一个镜像(对其声明一个或多个 MIRROR TO 子句)。
-
<backup_device>
-
指定用于备份操作的逻辑备份设备或物理备份设备。
-
{
logical_device_name |
@
logical_device_name_var }
-
数据库要备份到的备份设备(由 sp_addumpdevice 创建)的逻辑名称。逻辑名称必须遵守标识符规则。如果作为变量 (@logical_device_name_var) 提供,则可以将该备份设备名称指定为字符串常量 (@logical_device_name_var = logical backup device name) 或任何字符串数据类型(ntext 或 text 数据类型除外)的变量。
-
{DISK | TAPE }
= {
'
physical_device_name
' |
@
physical_device_name_var }
-
指定磁盘文件或磁带设备。在执行 BACKUP 语句之前,不要求指定的设备必须存在。如果存在物理设备且 BACKUP 语句中未指定 INIT 选项,则备份将追加到该设备。
-
-
n
-
一个占位符,表示最多可以在逗号分隔的列表中指定 64 个备份设备。
-
-
MIRROR TO <backup_device> [
,...
n ]
-
指定将要镜像 TO 子句中指定备份设备的一个或多个备份设备。必须对 MIRROR TO 子句和 TO 子句指定相同类型和数量的备份设备。最多可以使用三个 MIRROR TO 子句。
注意: 对于 MIRROR TO = DISK,BACKUP 自动决定磁盘设备合适的块大小。有关块大小的详细信息,请参阅此表后面的“BLOCKSIZE”。 -
<backup_device>
-
请参阅本部分前面的“<backup_device>”。
-
n
-
一个占位符,表示最多可以在逗号分隔的列表中指定 64 个备份设备。MIRROR TO 子句中的设备数必须等于 TO 子句中的设备数。
-
-
[
next-mirror-to ]
-
一个占位符,表示一个 BACKUP 语句除了包含一个 TO 子句外,最多还可包含三个 MIRROR TO 子句。
<>
指定要用于备份操作的选项。
-
DIFFERENTIAL
-
只能与 BACKUP DATABASE 一起使用,指定数据库备份或文件备份应该只包含上次完整备份后更改的数据库或文件部分。差异备份一般会比完整备份占用更少的空间。对于上一次完整备份后执行的所有单个日志备份,使用该选项可以不必再进行备份。
注意: 默认情况下,BACKUP DATABASE 创建完整备份。
备份集选项
这些选项对此备份操作创建的备份集进行操作。
注意: |
---|
若要为还原操作指定备份集,请使用 FILE = <backup_set_file_number> 选项。 |
-
COPY_ONLY
-
指定备份为“仅复制备份”,该备份不影响正常的备份顺序。仅复制备份是独立于定期计划的常规备份而创建的。仅复制备份不会影响数据库的总体备份和还原过程。
仅复制备份是在 SQL Server 2005 中引入的,用于在执行特殊目的的备份(例如在联机文件还原前备份日志)时使用。通常,仅复制日志备份仅使用一次即被删除。
- 与 BACKUP DATABASE 一起使用时,COPY_ONLY 选项创建的完整备份不能用作差异基准。差异位图不会被更新,因此差异备份的表现就像仅复制备份不存在一样。后续差异备份将最新的常规完整备份用作它们的基准。
重要提示: 如果将 DIFFERENTIAL 与 COPY_ONLY 一起使用,则忽略 COPY_ONLY,将创建差异备份。 - 与 BACKUP LOG 一起使用时,COPY_ONLY 选项将创建“仅复制日志备份”,该备份不会截断事务日志。仅复制日志备份对日志链没有任何影响,因此其他日志备份的表现就像仅复制备份不存在一样。
- 与 BACKUP DATABASE 一起使用时,COPY_ONLY 选项创建的完整备份不能用作差异基准。差异位图不会被更新,因此差异备份的表现就像仅复制备份不存在一样。后续差异备份将最新的常规完整备份用作它们的基准。
-
DESCRIPTION
= {
'
text
' |
@
text_variable }
-
指定说明备份集的自由格式文本。该字符串最长可以有 255 个字符。
-
NAME
= {
backup_set_name
|
@
backup_set_var }
-
指定备份集的名称。名称最长可达 128 个字符。如果未指定 NAME,它将为空。
-
PASSWORD
= {
password |
@
password_variable }
-
为备份集设置密码。PASSWORD 是一个字符串。如果为备份集定义了密码,则必须提供此密码才能对该备份集执行任何的 SQL Server 还原操作。但是,备份集密码不能防止覆盖备份文件。若要防止覆盖备份文件,请改用媒体集密码(请参阅此表后面的 MEDIAPASSWORD 选项)。(有关使用密码的详细信息,请参阅本主题后面的“权限”。)
安全说明: 此密码提供的安全性较低。它旨在防止授权用户或未授权用户使用 SQL Server 2005 工具进行不正确的还原,但是不能防止通过其他方式或通过替换密码来读取备份数据。保护备份的最佳做法是将备份磁带存储在安全的位置,或者备份到由适当的访问控制列表 (ACL) 保护的磁盘文件。ACL 应设置在创建备份的根目录下。 注意: 将来的 SQL Server 版本中会删除 PASSWORD 选项。
-
[ EXPIREDATE
=
date | RETAINDAYS
=
date ]
-
指定允许覆盖该备份的备份集的日期。如果同时使用这两个选项,RETAINDAYS 的优先级别将高于 EXPIREDATE。
如果这两个选项均未指定,则过期日期由 media retention 配置设置确定。
重要提示: 这些选项仅仅阻止 SQL Server 覆盖文件。用其他方法仍可擦除磁带,而通过操作系统也可以删除磁盘文件。有关过期验证的详细信息,请参阅本主题中的 SKIP 和 FORMAT。 -
EXPIREDATE
= {
date |
@
date_var }
-
指定备份集到期和允许被覆盖的日期。如果作为变量 (@date_var) 提供,则该日期必须采用已配置系统 datetime 的格式,并指定为下列类型之一:
- 字符串常量 (@date_var = date)
- 字符串数据类型(ntext 或 text 数据类型除外)的变量
- smalldatetime
- datetime 变量
例如:
- 'Dec 31, 2020 11:59 PM'
- '1/1/2021'
注意: 若要忽略过期日期,请使用 SKIP 选项。 - 字符串常量 (@date_var = date)
-
RETAINDAYS
= {
days
|
@
days_var }
-
指定必须经过多少天才可以覆盖该备份媒体集。如果作为变量 (@days_var) 提供,则必须指定为整数。
-
-
NO_LOG
-
在 BACKUP DATABASE 语句的上下文中,指定备份将不包含任何日志。这相当于在没有 SQL Server 2005 之前创建文件备份的方式。使用 NO_LOG 创建的数据库备份相当于不包含任何日志记录的完整文件备份集。
在完整恢复模式下,如果您需要快速备份数据并拥有该数据的完整日志备份顺序,NO_LOG 将很有用。
媒体集选项
这些选项作为一个整体对媒体集进行操作。
-
{
NOINIT | INIT }
-
控制备份操作是追加到还是覆盖备份媒体中的现有备份集。默认为追加到媒体中最新的备份集 (NOINIT)。
注意: 有关 { NOINIT | INIT } 和 { NOSKIP | SKIP } 之间交互的信息,请参阅本主题后面的“备注”。 -
NOINIT
-
表示备份集将追加到指定的媒体集上,以保留现有的备份集。如果为媒体集定义了媒体密码,则必须提供密码。NOINIT 是默认设置。
-
INIT
-
指定应覆盖所有备份集,但是保留媒体标头。如果指定了 INIT,将覆盖该设备上所有现有的备份集(如果条件允许)。默认情况下,BACKUP 将检查下列条件,如果其中的任一条件存在,都不会覆盖备份媒体:
- 所有备份集都未过期。有关详细信息,请参阅 EXPIREDATE 和 RETAINDAYS 选项。
- 如果 BACKUP 语句给出了备份集名,则该备份集名与备份媒体上的名称不匹配。有关详细信息,请参阅本部分前面介绍的 NAME 选项。
若要越过这些检查,请使用 SKIP 选项。
注意: 如果备份媒体有密码保护,则 SQL Server 将不写入媒体,除非提供媒体密码。SKIP 选项不覆盖此检查。仅通过重新格式化即可覆盖受密码保护的媒体,该操作将删除媒体中的备份。有关媒体密码的信息,请参阅本主题前面的“MEDIAPASSWORD”。有关重新格式化媒体的信息,请参阅本主题前面的“FORMAT”。 - 所有备份集都未过期。有关详细信息,请参阅 EXPIREDATE 和 RETAINDAYS 选项。
-
-
{
NOSKIP | SKIP }
-
控制备份操作是否在覆盖媒体中的备份集之前检查它们的过期日期和时间。
注意: 有关 { NOINIT | INIT } 和 { NOSKIP | SKIP } 之间交互的信息,请参阅本主题后面的“备注”。 -
NOSKIP
-
指示 BACKUP 语句在可以覆盖媒体上的所有备份集之前先检查它们的过期日期。这是默认行为。
-
SKIP
-
禁用备份集的过期和名称检查,这些检查一般由 BACKUP 语句执行以防覆盖备份集。有关 { NOINIT | INIT } 和 { NOSKIP | SKIP } 之间交互的信息,请参阅本主题后面的“备注”。
-
-
{
NOFORMAT | FORMAT }
-
指定是否应该在用于此备份操作的卷上写入媒体标头,以覆盖任何现有的媒体标头和备份集。
-
NOFORMAT
-
指定备份操作在用于此备份操作的媒体卷上保留现的有媒体标头和备份集。这是默认行为。
-
FORMAT
-
指定创建新的媒体集。FORMAT 将使备份操作在用于备份操作的所有媒体卷上写入新的媒体标头。卷的现有内容将变为无效,因为覆盖了任何现有的媒体标头和备份集。
重要提示: 使用 FORMAT 要谨慎。格式化媒体集的任何一个卷都将使整个媒体集不可用。例如,如果初始化现有条带媒体集中的单个磁带,则整个媒体集都将变得不可用。 指定 FORMAT 即表示 SKIP;SKIP 无需显式声明。
-
-
MEDIADESCRIPTION
= {
text |
@
text_variable }
-
指定媒体集的自由格式文本说明,最多为 255 个字符。
-
MEDIANAME
= {
media_name |
@
media_name_variable }
-
指定整个备份媒体集的媒体名称。媒体名称的长度不能多于 128 个字符,如果指定了 MEDIANAME,则该名称必须匹配备份卷上已存在的先前指定的媒体名称。如果未指定该选项或指定了 SKIP 选项,将不会对媒体名称进行验证检查。
-
MEDIAPASSWORD
= {
mediapassword |
@
mediapassword_variable }
-
为媒体集设置密码。MEDIAPASSWORD 是一个字符串。
如果为媒体集定义了密码,则在该媒体集上创建备份集之前必须提供此密码。另外,从该媒体集执行任何还原操作时也必须提供媒体密码。只有通过重新格式化才能覆盖受密码保护的媒体。有关详细信息,请参阅 FORMAT 选项。(有关使用密码的详细信息,请参阅本主题后面的“权限”部分。)
安全说明: 此密码提供的安全性较低。它旨在防止授权用户或未授权用户使用 SQL Server 2005 工具进行不正确的还原,但是不能防止通过其他方式或通过替换密码来读取备份数据。保护备份的最佳做法是将备份磁带存储在安全的位置,或者备份到由适当的访问控制列表 (ACL) 保护的磁盘文件。ACL 应设置在创建备份的根目录下。 注意: 将来的 SQL Server 版本中会删除 MEDIAPASSWORD 选项。
-
BLOCKSIZE
= {
blocksize |
@
blocksize_variable }
-
用字节数来指定物理块的大小。支持的大小是 512、1024、2048、4096、8192、16384、32768 和 65536 (64 KB) 字节。对于磁带设备默认为 65536,其他情况为 512。通常,由于 BACKUP 自动选择适合于设备的块大小,因此不需要此选项。显式声明块大小将覆盖自动选择块大小。
如果要建立一个计划在 CD-ROM 上进行复制和还原的备份,请指定 BLOCKSIZE=2048。
注意: 通常,只有写入磁带设备时,此选项才会影响性能。
数据传输选项
-
BUFFERCOUNT
= {
buffercount |
@
buffercount_variable }
-
指定用于备份操作的 I/O 缓冲区总数。可以指定任何正整数;但是,较大的缓冲区数可能导致由于 Sqlservr.exe 进程中的虚拟地址空间不足而发生“内存不足”错误。
缓冲区使用的总计空间由下面公式确定:buffercount * maxtransfersize。
-
MAXTRANSFERSIZE
= {
maxtransfersize |
@
maxtransfersize_variable }
-
指定要在 SQL Server 和备份媒体之间使用的最大传输单元(字节)。可能的值是 65536 字节 (64 KB) 的倍数,最多可到 4194304 字节 (4 MB)。
错误管理选项
使用这些选项可以确定是否为备份操作启用了备份校验和,以及备份操作是否将在遇到错误时停止。
-
{
NO_CHECKSUM | CHECKSUM }
-
控制是否启用备份校验和。
-
NO_CHECKSUM
-
显式禁用备份校验和的生成(以及页校验和的验证)。这是默认行为。
-
CHECKSUM
-
启用备份校验和,以便 BACKUP 可以执行以下操作:
- 将页写入备份媒体之前,如果该页显示此信息,则 BACKUP 将对该页进行验证(校验和或页撕裂)。
- 无论是否存在页校验和,BACKUP 都会为备份流生成一个单独的备份校验和。还原操作可使用(可选)备份校验和来验证该备份是否损坏。备份校验和存储在备份媒体上,而不是存储在数据库页上。备份校验和可在还原时使用。
使用备份校验和可能会影响工作负荷以及备份吞吐量。
- 将页写入备份媒体之前,如果该页显示此信息,则 BACKUP 将对该页进行验证(校验和或页撕裂)。
-
-
{
STOP_ON_ERROR | CONTINUE_AFTER_ERROR }
-
控制备份操作在遇到页校验和错误后是停止还是继续。
-
STOP_ON_ERROR
-
如果未验证页校验和,则指示 BACKUP 失败。这是默认行为。
-
CONTINUE_AFTER_ERROR
-
指示 BACKUP 继续执行,不管是否遇到无效校验和或页撕裂之类的错误。
数据库损坏时,如果无法使用 NO_TRUNCATE 选项备份日志尾部,则可以通过指定 CONTINUE_AFTER_ERROR 而不是 NO_TRUNCATE 尝试执行尾日志备份。
-
兼容性选项
-
RESTART
-
无效。为了与旧版 SQL Server 兼容,此版本接受此选项。
监视选项
-
STATS [
=
percentage ]
-
每当另一个百分比完成时显示一条消息,并用于测量进度。如果省略 percentage,则 SQL Server 在每完成 10% 就显示一条消息。
STATS 选项报告截止报告下一个间隔的阈值时的完成百分比。这是指定百分比的近似值;例如,当 STATS=10 时,如果完成进度为 40%,则该选项可能显示 43%。对于较大的备份集,这不是问题,因为完成百分比在已完成的 I/O 调用之间变化非常缓慢。
磁带选项
这些选项只用于 TAPE 设备。如果使用的是非磁带设备,则会忽略这些选项。
-
{
REWIND | NOREWIND }
-
-
REWIND
-
指定 SQL Server 将释放和重绕磁带。REWIND 是默认设置。
-
NOREWIND
-
指定在备份操作之后 SQL Server 让磁带一直处于打开状态。在对磁带执行多个备份操作时,可以使用此选项来帮助改进性能。
NOREWIND 包含 NOUNLOAD,并且这些选项在单个 BACKUP 语句中不兼容。
注意: 如果使用 NOREWIND,则 SQL Server 实例将一直保留磁带机的所有权,直到在同一进程中运行的 BACKUP 或 RESTORE 语句使用 REWIND 或 UNLOAD 选项或服务器实例关闭为止。磁带保持打开将防止其他进程访问磁带。
-
-
{
UNLOAD | NOUNLOAD }
-
注意: UNLOAD/NOUNLOAD 这一会话设置可在整个会话期间存在,或者在通过指定其他设置而进行重置之前一直存在。 -
UNLOAD
-
指定在备份完成后自动重绕并卸载磁带。会话开始时 UNLOAD 是默认值。
-
NOUNLOAD
-
指定在 BACKUP 操作之后磁带将继续加载在磁带机中。
-
注意: |
---|
对于备份到磁带备份设备,BLOCKSIZE 选项会影响备份操作的性能。通常,只有写入磁带设备时,此选项才会影响性能。 |
日志特定的选项
这些选项仅与 BACKUP LOG 一起使用。
注意: |
---|
如果不想进行日志备份,则请使用简单恢复模式。 |
-
{ NORECOVERY | STANDBY
=
undo_file_name }
-
-
NORECOVERY
-
备份日志的尾部并使数据库处于 RESTORING 状态。当将故障转移到辅助数据库或在执行 RESTORE 操作前保存日志尾部时,NORECOVERY 很有用。
若要执行最大程度的日志备份(跳过日志截断)并自动将数据库置于 RESTORING 状态,请同时使用 NO_TRUNCATE 和 NORECOVERY 选项。
-
STANDBY
=
standby_file_name
-
备份日志的尾部并使数据库处于只读和 STANDBY 状态。将 TANDBY 子句写入备用数据(执行回滚,但需带进一步还原选项)。使用 STANDBY 选项等同于 BACKUP LOG WITH NORECOVERY 后跟 RESTORE WITH STANDBY。
使用备用模式需要一个备用文件,该文件由 standby_file_name 指定,其存储于数据库的日志中。如果指定的文件已经存在,则数据库引擎会覆盖该文件;如果指定的文件不存在,则数据库引擎将创建它。备用文件将成为数据库的一部分。
该文件将保存对回滚所做的更改,如果要在以后应用 RESTORE LOG 操作,则必须反转这些更改。必须有足够的磁盘空间供备用文件增长,以使备用文件能够包含数据库中由回滚的未提交事务修改的所有不重复的页。
-
-
NO_TRUNCATE
-
指定不截断日志,并使数据库引擎尝试执行备份,而不考虑数据库的状态。因此,使用 NO_TRUNCATE 执行的备份可能具有不完整的元数据。该选项允许在数据库损坏时备份日志。
BACKUP LOG 的 NO_TRUNCATE 选项相当于同时指定 COPY_ONLY 和 CONTINUE_AFTER_ERROR。
如果不使用 NO_TRUNCATE 选项,则数据库必须联机。
如果数据库处于 OFFLINE 或 EMERGENCY 状态,则即使使用 NO_TRUNCATE,也不允许进行 BACKUP。
-
[ NO_LOG | TRUNCATE_ONLY ]
-
注意: 在 SQL Server 的未来版本中将删除该选项。应避免使用该选项进行新的开发工作,并计划修改当前使用它的应用程序。 仅在 BACKUP LOG 语句中使用,它执行一个检查点,以便手动强制截断事务日志。NO_LOG 和 TRUNCATE_ONLY 是同义的。因为并不备份日志,所以没有必要指定备份设备。
在简单恢复模式下,执行检查点将在不创建备份副本的情况下,删除日志中不活动的部分。这样就丢弃了除活动日志外的其他所有部分,从而截断了日志。此选项会释放空间,但是存在可能丢失数据的风险。使用 NO_LOG 或 TRUNCATE_ONLY 截断日志后,在日志的截断部分中记录的更改只有到下次数据库备份时才能恢复。因此,为了进行恢复,使用这些选项中的任一个后,应立即执行 BACKUP DATABASE 以执行完整或差异数据库备份。
注意: 建议不要使用 NO_LOG 或 TRUNCATE_ONLY 手动截断事务日志,因为这样会断开日志链。在下一次完整备份或差异数据库备份之前,将无法为数据库提供媒体故障保护。只在非常特殊的情况下才手动截断日志,并立即创建数据备份。
l EXPIREDATE
l RETAINDAYS
参数实现服务器上数据库的自动备份与删除。
具体操作在数据库服务器-》企业管理器-》管理-》SQL Server 代理-》作业-》新建作业,然后把下面的SQL语句复制进去就可以了, 这里是自动覆盖30天以前的备份集。
@FileName VARCHAR ( 500 ),
@CurrentTime VARCHAR ( 100 ),
@expiredate varchar ( 100 )
SET @CurrentTime = CONVERT ( CHAR ( 10 ), GETDATE (), 120 ) + ' _ ' + CAST ( DATEPART (hh, GETDATE ()) AS VARCHAR ) + ' . ' + CAST ( DATEPART (mi, GETDATE ()) AS VARCHAR )
set @expiredate = dateadd (dd, 30 , getdate ())
SET @FileName = ' D:\sqlbak\daybak\ ' + @CurrentTime + ' .bak '
BACKUP DATABASE [ db ] TO DISK = @FileName with format,EXPIREDATE = @expiredate