事务日志备份与还原(3)

2019-04-02 22:49

图14-7 【选项】选项卡

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

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

1.语法形式

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

BACKUP LOG { database_name | @database_name_var } {

TO [ ,...n ]

[ [ MIRROR TO [ ,...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

14.3 产生备份集

通过前面的学习,我们已经知道SQL Server 2005数据库提供了将数据库的状态恢复到故障发生点的功能。但是这些功能的顺利执行需要有一些前提条件,比如联机日志不能损坏,否则将丢失最后一次日志备份完成时刻到故障点的事务。

很多DBA不了解这其中的奥秘,往往会想当然地认为利用已有的备份日志就可以将数据库恢复到故障点,忘记实际上还需要做一次日志备份才能恢复的奥秘。

接下来我们通过一个具体的实例来完成将数据库恢复到故障点的功能。

14.3.1 案例设计

案例的设计和完成的思路如下。

1.案例步骤

(1)新建数据库db_test,数据库工作在完全恢复模型下,新建表t_clusterindextest,向表中录入1001条数据。查询得到数据库的日志文件记录的日志区间。

(2)做一次完整数据库备份。查询得到备份后的数据库的日志区间和备份集中的日志区间。

(3)删除99条数据,产生事务日志,查询得到数据库的日志区间。

(4)第1次完成事务日志备份,按照默认设置就可以,即不是尾日志备份。查询备份后的数据库日志区间和备份集的日志区间。

(5)删除101条数据,产生事务日志,查询得到数据库的日志区间。

(6)第2次完成事务日志备份,按照默认设置就可以,即不是尾日志备份。查询备份后的数据库日志区间和备份集的日志区间。

(7)删除表中的1条记录,删除完毕后模拟故障发生。 (8)备份尾日志,然后尝试进行恢复操作。 案例的步骤可以用图14-8来表示。

图14-8 案例步骤

2.验证思路

在备份过程形成的最后的备份集中,我们可以这样来进行验证。

(1)利用完整数据库备份+日志备份1,可以将数据库恢复到删除99条记录的状态。 (2)利用完整数据库备份+日志备份1+日志备份2,可以恢复到将数据库删除200条记录的状态,而无法将数据库恢复到删除201条记录的状态。

(3)由于有尾日志备份,所以利用完整数据库备份+日志备份1+日志备份2+尾日志备份来将数据库恢复到删除201条记录的状态。

3.结论

通过上述实验步骤,说明尾日志备份在将数据库恢复到故障点时的重要性。读者可以深刻理解联机日志千万不能出故障的根本原因。


事务日志备份与还原(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版2016年小学六年级数学第十二册期末质量检测题含答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: