此时我们有一个完整备份和两个日志备份,让我们来还原数据库
--========================================================
--
使用完整备份来还原数据库
[TestDB4],
并指定
NORECOVERY
来使得
--
数据库处于
"
正在还原
"
状态
RESTORE DATABASE [TestDB4] FROM DISK = N'D:\TestDB3_F1.BAK'
WITH FILE = 1, MOVE N'TestDB3' TO N'D:\DB\TestDB4.mdf',
MOVE N'TestDB3_log' TO N'D:\DB\TestDB4_1.LDF',
NORECOVERY, NOUNLOAD, STATS = 10
GO
--======================================================
--
使用日志备份来还原
,
使用
STANDBY
选项来使得数据库处于
"
备用
/
只读
"
RESTORE LOG [TestDB4] FROM DISK = N'D:\TestDB3_L1.BAK'
WITH STANDBY = N'D:\ROLLBACK_UNDO_TestDB4.BAK',
NOUNLOAD, STATS = 10
此时数据库可以访问,查询表会发现表中有
100
条数据,恰好是第一个提交事务的数据,
第二个未提交事务插入的
1000
条数据无法查询到。
再来查看
STANDBY
指定的文件
继续还原日志
--===============================================
--
继续还原日志备份
BACKUP LOG TestDB3 TO DISK ='D:\TestDB3_L1.BAK'
会发现可以正常还原!
我们重做上面还原步骤,但在最后一次还原日志之前,把
STANDBY
指定的文件删除掉,
会有以下错误提示:
消息
3441
,级别
17
,状态
1
,第
3
行
在启动备用数据库
'TestDB4' (
数据库
ID
为
10)
的过程中,
RESTORE
语句无法访问它的备用文
件
('D:\ROLLBACK_UNDO_TestDB4.BAK')
。
操作系统错误为
'2(
系统找不到指定的文件。
)'
。诊断该操作系统错误,并更正此问题,然后重试启
动操作。
PS:
在生产环境,不要轻易删除
STANDBY
指定的文件哦,要不你就“哭吧哭吧不是罪啦”
评论