事务日志备份与恢复 2

14.2 尾日志备份

对于将数据库恢复到即时点,很好理解也很好操作。下面我们重点来研究将数据库恢复到故障点时必不可少的操作,即尾日志备份。

但是,需要注意的是,如果在Management Studio中按照默认设置是永远无法完成尾日志备份的。

14.2.1 图形化尾日志备份操作

图14-7所示为选择日志备份的数据库的【选项】选项卡。默认情况下选择的是【截断事务日志】单选按钮,这样将永远无法备份尾日志。

提示:要完成尾日志备份,需要在图14-7中选择“备份日志尾部,并使数据库处于还原状态”选项。

图14-7 【选项】选项卡

14.2.2 用Backup Log语句完成尾日志备份

也可以直接执行Backup Log语句来完成日志备份。下面介绍该语句的语法形式。

1.语法形式

Backup Log语句的语法形式如下。

BACKUP LOG { database_name | @database_name_var }

{

      TO <backup_device> [ ,...n ]

[ [ MIRROR TO <backup_device> [ ,...n ] ] [ ...next-mirror ] ]

      [ WITH

      [ BLOCKSIZE = { blocksize | @blocksize_variable } ]

      [ [ , ] { CHECKSUM | NO_CHECKSUM } ]

      [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]

      [ [ , ] DESCRIPTION = { 'text' | @text_variable } ]

      [ [ , ] EXPIREDATE = { date | @date_var }

      | RETAINDAYS = { days | @days_var } ]

      [ [ , ] PASSWORD = { password | @password_variable } ]

      [ [ , ] { FORMAT | NOFORMAT } ]

      [ [ , ] { INIT | NOINIT } ]

      [ [ , ] { NOSKIP | SKIP } ]

      [ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]

      [ [ , ] MEDIANAME = { media_name | @media_name_variable } ]

      [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]

      [ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]

      [ [ , ] NO_TRUNCATE ]

      [ [ , ] { NORECOVERY | STANDBY = undo_file_name } ]

      [ [ , ] { NOREWIND | REWIND } ]

      [ [ , ] { NOUNLOAD | UNLOAD } ]

      [ [ , ] RESTART ]

      [ [ , ] STATS [ = percentage ] ]

      [ [ , ] COPY_ONLY ]

      ]

}

2.主要参数

对于其他参数读者可以参阅联机丛书的有关说明。与备份尾日志有关的主要参数如下。

— NO_TRUNCATE:只与BACKUP LOG一起使用。指定不截断日志,并使数据库引擎尝试执行备份,而不考虑数据库的状态。该选项允许在数据库损坏时备份日志。

— BACKUP LOG的NO_TRUNCATE选项相当于同时指定COPY_ONLY和CONTINUE_AFTER_ERROR。

— NO_LOG | TRUNCATE_ONLY:通过放弃活动日志以外的所有日志,无须备份复制日志即可删除不活动的日志部分,并截断日志。该选项会释放空间。因为并不保存日志备份,所以没有必要指定备份设备。NO_LOG和TRUNCATE_ONLY是同义的。使用NO_LOG或TRUNCATE_ONLY截断日志后,记录在日志中的更改不可恢复。为了进行恢复,请立即执行BACKUP DATABASE以执行完整备份或完整差异备份。

3.使用方法

要备份尾日志,主要使用Truncate_Only参数就可以。本书的实例代码如下。

BACKUP LOG [db_test] TO DISK = N'C:"test2.bak'

WITH NO_TRUNCATE ,

NOFORMAT,

NOINIT,

NAME = N'db_test-事务日志 备份',

SKIP,

NOREWIND,

NOUNLOAD,

NORECOVERY ,

STATS = 10

GO

posted @ 2008-09-05 11:22  小飞龙  阅读(401)  评论(0编辑  收藏  举报