备份数据库和事务日志。
BACKUP DATABASE DIRECTORY backup-directory [ backup-option [ backup-option ... ] ]
backup-directory : { string | variable }
backup-option : WAIT BEFORE START | WAIT AFTER END | DBFILE ONLY | TRANSACTION LOG ONLY | TRANSACTION LOG RENAME [ MATCH ] | TRANSACTION LOG TRUNCATE | ON EXISTING ERROR | WITH COMMENT comment string | HISTORY { ON | OFF } | AUTO TUNE WRITERS { ON | OFF } | WITH CHECKPOINT LOG { AUTO | COPY | NO COPY | RECOVER }
BACKUP DATABASE TO archive-root
[ backup-option [ backup-option ... ] ]
archive-root : { string | variable }
backup-option : WAIT BEFORE START | WAIT AFTER END | DBFILE ONLY | TRANSACTION LOG ONLY | TRANSACTION LOG RENAME [ MATCH ] | TRANSACTION LOG TRUNCATE | ATTENDED { ON | OFF } | WITH COMMENT comment string | HISTORY { ON | OFF } | WITH CHECKPOINT LOG [ NO ] COPY | MAX WRITE { number-of-writers | AUTO } | FREE PAGE ELIMINATION { ON | OFF }
comment-string : string
number-of-writers : integer
DIRECTORY 子句 备份文件在磁盘上的目标位置,相对于数据库服务器启动时的当前目录。如果该目录不存在,则会进行创建。如果指定空字符串作为目录,则不必先复制日志就可以重命名或截断该事务日志。使用数据库镜像时,请不要使用此子句。
如果启用了磁盘沙箱,则会将数据库的操作限制为主数据库文件所在的目录。 请参见磁盘沙箱。
WAIT BEFORE START 子句 此子句会将备份一直延迟到没有活动事务。数据库的所有其它活动将被阻止,系统将执行检查点。
使用此子句和 WITH CHECKPOINT LOG NO COPY 子句可验证数据库的备份副本不需要恢复,并且允许您在只读模式下启动数据库的备份副本并对其进行校验。校验备份数据库时,不需要生成其它数据库副本。
WAIT AFTER END 子句 此子句可确保所有事务在事务日志被重命名或截断之前完成。数据库服务器先等待其它连接提交或者回退任何已打开的事务,然后再完成备份。应慎用此子句,因为新传入的事务会使备份无限期等待。
DBFILE ONLY 子句 此子句可为主数据库文件和所有关联的 dbspace 创建备份副本,但不会为事务日志创建备份副本。不能将 DBFILE ONLY 子句与 TRANSACTION LOG RENAME 或 TRANSACTION LOG TRUNCATE 子句一起使用。
TRANSACTION LOG ONLY 子句 可以指定 TRANSACTION LOG ONLY 子句,以在不复制其它数据库文件的情况下创建事务日志的备份副本。
TRANSACTION LOG RENAME [MATCH] 子句 使用此子句会使数据库服务器在完成备份时重命名当前事务日志。如果省略关键字 MATCH,则事务日志的备份副本与数据库的当前事务日志同名。如果使用了关键字 MATCH,则事务日志的备份副本的名称格式为 YYMMDDnn.log,以与当前事务日志的重命名副本匹配。使用关键字 MATCH 使得同一语句可执行多次而不会覆盖旧的数据。
可以通过使用 TRANSACTION LOG ONLY 子句指定一个空目录名,以在不完成备份的情况下重命名事务日志。例如:
BACKUP DATABASE DIRECTORY '' TRANSACTION LOG ONLY TRANSACTION LOG RENAME; |
TRANSACTION LOG TRUNCATE 子句 如果使用该子句,当前事务日志将被截断,并在完成备份时重新启动。使用数据库镜像时,请不要使用此子句。
可以通过使用 TRANSACTION LOG ONLY 子句指定一个空目录名,以在不完成备份的情况下截断事务日志。例如:
BACKUP DATABASE DIRECTORY '' TRANSACTION LOG ONLY TRANSACTION LOG TRUNCATE; |
archive-root 子句 档案文件的文件名或磁带驱动器设备名。
要备份到磁带,必须指定磁带驱动器的设备名。每执行一次档案备份,自动附加到档案文件名末尾的编号就会增加。
反斜线 ( \ ) 是 SQL 字符串中的转义字符,因此每次必须使用两个反斜线。
ON EXISTING ERROR 子句 此子句仅适用于映像备份。缺省情况下,现有文件将在执行 BACKUP DATABASE 语句时被覆盖。如果使用了此子句,则当其中任一将由备份创建的文件已存在时,会出现错误。
ATTENDED 子句 该子句仅在备份到磁带设备时适用。ATTENDEDATTENDED ATTENDED ON(缺省值)表示有人可以监视磁带驱动器的状态,必要时在驱动器中放入新磁带。如果磁带驱动器要求干预,系统会将一条消息将发送到发出 BACKUP DATABASE 语句的应用程序。然后数据库服务器等待驱动器就绪。这在某些情况下会发生,例如在需要新磁带时。
如果指定 ATTENDED OFF 且需要新磁带,或者驱动器尚未就绪,则不发送消息,并给出错误。
HISTORY 子句 此子句可启用或禁用备份历史记录。缺省情况下,此子句为 ON,这意味着每次备份操作都会在 backup.syb 文件中附加一行。指定 HISTORY OFF 可以阻止对 backup.syb 文件进行更新,建议在以下情况下进行此操作:
AUTO TUNE WRITERS 子句 指定此子句可启用或禁用写入程序的自动调整。在备份过程中,有一个写入程序将备份文件写入到备份目录中。如果备份目录所在的设备(例如 RAID 阵列)可处理递增写入程序装载,则缺省的 AUTO TUNE WRITERS ON 可通过增加写入程序数来提高整体备份性能。数据库服务器会定期检查所有参与备份的设备的读写性能。指定 AUTO TUNE WRITERS OFF 可阻止数据库服务器创建其它写入程序。
WITH CHECKPOINT LOG 子句 此子句指定备份在将数据库文件写入目标目录之前处理这些数据库文件的方式。选择在备份期间是应用前映像还是复制检查点日志会对性能产生影响。缺省设置为 AUTO(映像备份)和 COPY(档案备份)。
COPY 子句 此选项不能与 BACKUP 语句的 WAIT BEFORE START 子句一起使用。
如果指定 COPY,则备份期间会读取数据库文件,但不应用任何已修改的页。整个检查点日志以及系统 dbspace 会复制到备份目录中。下次启动数据库服务器时,数据库服务器会自动将数据库恢复到备份开始时在检查点所处的状态。
因为页无需写入临时文件,所以使用此选项可实现更好的备份性能,并能减少服务器对备份期间正在运行的其它连接的内部争用。但是,由于检查点日志包含修改页的原始映像,因此若数据库进行了更新,该日志就会增大。若指定 COPY,则数据库文件的备份副本可能要比备份开始时的数据库文件大。COPY 选项应在目标目录不存在磁盘空间问题的情况下使用。
NO COPY 子句 如果指定 NO COPY,则不会将检查点日志作为备份的一部分进行复制。如果选择此选项,经过修改的页会被保存在临时文件中,这样便可在备份过程中应用这些页。数据库文件的备份副本与备份操作开始时的数据库大小相同。
使用此选项可以减小备份的数据库文件,但会减缓备份过程,并有可能降低数据库服务器中其它操作的性能。它在目标驱动器空间有限的情况下非常有用。
RECOVER 子句 如果指定 RECOVER,数据库服务器会复制检查点日志(与 COPY 选项一样),但会在备份结束时将检查点日志应用于数据库。这样会将备份的数据库文件恢复到备份操作开始时的状态(和大小)。此选项在备份驱动器空间有限的情况下非常有用(它备份检查点日志所需的空间量与 COPY 选项相同,但生成的文件会小一些)。
AUTO 子句 如果指定 AUTO,数据库服务器会检查备份目录所在卷的可用磁盘空间量。备份开始时,如果可用磁盘空间至少是数据库大小的两倍,则使用此选项会像指定了 COPY 一样工作。否则,会像指定了 NO COPY 一样工作。AUTO 为缺省行为。
MAX WRITE 子句 对于档案备份,缺省情况下有一个线程专用于写备份文件。如果备份目录所在的设备(例如 RAID 阵列)可处理递增写入程序装载,则可通过增加用作写入程序的线程数来提高整体备份性能。
如果指定了 AUTO,将会为每个读取程序线程分别创建一个输出流。值 n 指定可创建的最多输出流数,最大数目为读取程序线程数。该子句的缺省值为 1。如果要备份到磁带,则只能使用一个写入程序。
第一个流(流 0)将生成名为 myarchive.X 的文件,其中 X 是从 1 开始并一直增大为所需文件数的一个数字。所有其它流将生成名为 myarchive.Y.Z 的文件,其中 Y 是流编号(从 1 开始),Z 是从 1 开始并一直增大为所需文件数的一个数字。
FREE PAGE ELIMINATION 子句 缺省情况下,档案备份会跳过某些空闲页,因此备份会更小并且备份速度可能更快。空闲页消除功能对备份事务日志文件不会起到任何作用,因为事务日志文件不包含空闲页。因此,事务日志文件较小的数据库要比事务日志文件较大的数据库更能从空闲页消除功能中受益。
如果启用空闲页消除功能时备份了高度加密的数据库,则恢复该数据库时必须指定加密密钥。如果在禁用空闲页消除功能时备份了高度加密的数据库,则恢复该数据库时不必指定加密密钥。
从版本 12 开始,将无法再恢复由 11 或更早版本的数据库服务器所创建的档案备份。
BACKUP 语句执行服务器端备份。要执行客户端备份,请使用 dbbackup 实用程序。
如果已为数据库启用磁盘沙箱功能,则必须指定用于禁用磁盘沙箱功能的安全功能密钥,以使数据库服务器能够在沙箱之外的目录中(主数据库文件所在的目录及其所有子目录)创建备份。 请参见磁盘沙箱。
每个备份操作(无论是映像还是档案)都更新名为 backup.syb 的历史记录文件。此文件记录已在数据库服务器上执行的 BACKUP 和 RESTORE 操作。有关如何确定 backup.syb 文件位置的信息,请参见SALOGDIR 环境变量。
要创建不必通过恢复就可以在只读服务器上启动的备份,必须同时使用 WAIT BEFORE START 和 WITH CHECKPOINT LOG NO COPY 子句。WAIT BEFORE START 子句可确保回退日志为空,WITH CHECKPOINT LOG NO COPY 子句可确保检查点日志为空。如果两个文件中任何文件丢失,则需要恢复。如果不需要恢复备份的数据库,则可以使用 WITH CHECKPOINT LOG RECOVER 替代 WAIT BEFORE START 和 WITH CHECKPOINT LOG NO COPY 子句。
语法 1 - 映像备份 映像备份创建每个数据库文件的副本,采用的方式与备份实用程序 (dbbackup) 相同。缺省情况下,备份实用程序将在客户端计算机上制作备份,但在使用备份实用程序时也可以通过指定 -s 选项在数据库服务器上创建备份。但如果使用 BACKUP DATABASE 语句,则只能在数据库服务器上制作备份。
或者,仅可保存数据库文件或事务日志。备份完成后也可以重命名或截断事务日志。
或者,可以指定空字符串作为目录,这样不必事先复制日志就可以重命名或截断它。这在需要考虑空间大小的复制环境中非常有用。您可以将此功能与事务日志大小的事件处理程序结合使用,以便在事务日志达到给定大小时将其重命名,还可以将此功能与 delete_old_logs 选项结合使用,以便删除不再需要的事务日志。
要从映像备份恢复,请将保存的文件复制回原来的位置并重新应用事务日志。
语法 2 - 档案备份 档案备份创建单个文件来保存所有必需的备份信息。目标可以是文件名或磁带驱动器设备名。
一个给定的磁带上仅能有一个备份。磁带在备份结束时弹出。
每个磁带上只能有一个档案,但是一个档案可以跨转多个磁带。要从档案备份恢复数据库,可使用 RESTORE DATABASE 语句。
如果某个 RESTORE DATABASE 语句引用了仅包含一个事务日志的档案文件,则该语句必须指定一个文件名(表明恢复的数据库文件所在的位置),即使该文件不存在。例如,若要从仅包含一个事务日志的档案恢复到目录 C:\MYNEWDB,RESTORE DATABASE 语句为:
RESTORE DATABASE 'c:\\temp\\mynewdb\my.db' FROM archive-root |
不得以任何方式更改数据库和事务日志的备份副本。如果在备份过程中未执行任何事务,或者指定了 BACKUP DATABASE WITH CHECKPOINT LOG RECOVER 或 WITH CHECKPOINT LOG NO COPY,则可以使用只读模式或通过验证备份数据库的副本来验证备份数据库的有效性。
但是,如果有正在执行的事务,或者指定了 BACKUP DATABASE WITH CHECKPOINT LOG COPY,则当您启动数据库服务器时,数据库服务器必须执行数据库恢复。恢复功能会修改备份副本,这是不希望出现的情况。
在执行此语句期间,可以请求进度消息。
也可以使用 Progress 连接属性确定语句的执行进度。
您必须具有 BACKUP DATABASE 系统特权。
导致检查点。
SQL/2008 服务商扩充。
Windows Mobile 在 Windows Mobile 上仅支持 BACKUP DATABASE DIRECTORY 语法(语法 1)。
将当前数据库和事务日志分别备份到不同文件,并重命名现有事务日志。将创建一个映像备份。
BACKUP DATABASE DIRECTORY 'c:\\temp\\backup' TRANSACTION LOG RENAME; |
用于重命名事务日志的选项很有用,特别是在仍需要旧事务日志的复制环境中。
将当前数据库和事务日志备份到磁带:
BACKUP DATABASE TO '\\\\.\\tape0'; |
重命名事务日志,但不创建副本:
BACKUP DATABASE DIRECTORY '' TRANSACTION LOG ONLY TRANSACTION LOG RENAME; |
使用动态构建的目录名执行 BACKUP DATABASE 语句:
CREATE EVENT NightlyBackup SCHEDULE START TIME '23:00' EVERY 24 HOURS HANDLER BEGIN DECLARE dest LONG VARCHAR; DECLARE day_name CHAR(20); SET day_name = DATENAME( WEEKDAY, CURRENT DATE ); SET dest = 'd:\\backups\\' || day_name; BACKUP DATABASE DIRECTORY dest TRANSACTION LOG RENAME; END; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |