光盘代码:\\代码\\1404.sql。
(2)执行dbcc log命令查询删除后的数据库日志如图14-17所示。
图14-17 删除101条记录后的数据库日志
— 第1条日志记录的Current LSN:0000001d:00000166:00b3。 — 最后1条日志记录的Current LSN:0000001e:00000010:0008。 (3)第2次备份日志,不备份尾日志。
(4)执行dbcc log命令查询备份后的数据库的日志,如图14-18所示。 — 第1条日志记录的Current LSN:0000001e:00000013:0001。 — 最后1条日志记录的Current LSN:0000001e:00000027:0001。
图14-18 第2次事务日志备份后的数据库日志
(5)执行restore headeronly命令查询备份集中的日志区间如图14-19所示。
图14-19 第2次日志备份后的备份集日志
5.模拟故障发生
(1)执行下列代码删除1条记录。 delete from db_test.dbo.t_clusterindextest where t_t_id=555
光盘代码:\\代码\\1405.sql。
(2)执行dbcc log命令查询数据库的日志,如图14-20所示。
图14-20 模拟故障发生时的日志
— 第1条日志记录的Current LSN:0000001e:00000013:0001。 — 最后1条日志记录的Current LSN:0000001e:0000004c:0005。
6.尾日志备份
(1)选择备份日志,在如图14-21所示的选项卡中选择进行尾日志备份。 (2)也可以通过执行1401.sql来完成同样的过程,执行情况如图14-22所示。
7.数据库日志
所有的操作执行完毕后,执行dbcc log命令查询数据库的日志如图14-23所示。
图14-21 备份尾日志
图14-22 执行尾日志备份的情况
图14-23 执行备份完毕后的数据库日志
— 第1条日志记录的Current LSN:0000001e:00000013:0001。 — 最后1条日志记录的Current LSN:0000001e:00000050:0001。
8.最终的备份集日志
查询最终的备份集的日志如图14-24所示。
图14-24 最后的备份集日志
14.4 在线恢复到故障点
如果数据库没有损坏,我们就可以在线将数据库恢复到故障点。在线恢复将使用系统数据库msdb中存储的数据库备份信息,但使用的日志还是备份集中的日志。
14.4.1 存储备份信息的系统表
SQL Server 2005将备份信息统一保存在msdb系统数据库中,要查询数据库的备份集信息,可以通过执行下列语句来完成。 select * from msdb.dbo.backupset
光盘代码:\\代码\\1406.sql。 执行结果如图14-25所示。
图14-25 保存备份集信息的系统表
14.4.2 在线恢复到故障点
在Management Studio中选择还原数据库,出现如图14-26所示的【常规】选项卡。
图14-26 【常规】选项卡
选择恢复完整数据库备份和连续的3个日志备份,这样就可以将数据库的状态恢复到故障点。
14.5 用Bak文件恢复到故障点的奥秘
如果数据库被损坏,我们就只能利用备份集文件(通常扩展名为BAK)来恢复数据库,如果备份集中包含了尾日志备份,我们同样能将数据库恢复到故障点。
前面我们已经介绍了使用restore headeronly命令可以查看备份集文件的头部信息。这里的信息和msdb系统数据库中保存的信息是一致的。
区别在于在删除数据库时,我们可以选择是否同时删除msdb系统数据库中的备份信息,而备份集文件的备份信息是存储在其头部的,不会随着msdb系统数据库的备份信息的删除而被删除。
14.5.1 发现的问题