事务日志备份与恢复 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