--2。 还原最近的完整备份
restore database SMT from disk='\\172.26.10.4\e$\BackUp\172.26.10.3\SMT\SMT_FULL20100711.BAK'
with standby='D:\SQLDATA\UNDO_SMT.DAT'
--确认最近的完整备份DAT文件存储路径standby='D:\SQLDATA\UNDO_SMT.DAT'
restore filelistonly from disk='\\172.26.10.4\e$\BackUp\172.26.10.3\SMT\SMT_FULL20100711.BAK'
--3。 还原最近的差异备份,没有差异备份就得一个一个还原log备份
restore database SMT from disk='\\172.26.10.4\e$\BackUp\172.26.10.3\SMT\SMT_DIFF20100712.BAK'
with standby='D:\SQLDATA\UNDO_SMT.DAT'
--4。 确认最近的LOG备份需要还原到那个位置position
restore headeronly from disk='\\172.26.10.4\e$\BACKUP\172.26.10.3\SMT\LOG\SMT_LOG20100712.TRN'
因为最后一个差异的时间为7/12 11:52,所以继续还原LOG备份时要从7/12 11:52之后的第一个位置开始,也就是从position=13。由于第一次上传工单的时间为7/12 17:20,所以还原到position=18,之后还原position=19就要by时间来还原了。
declare @i as int
set @i=13
while @i<=18
begin
restore log SMT from disk='\\172.26.10.4\e$\BACKUP\172.26.10.3\SMT\LOG\SMT_LOG20100712.TRN'
with standby='D:\SQLDATA\UNDO_SMT.DAT',file=@i--,stopat='2010-03-05 06:01:00.000'
set @i=@i+1
end
--还原到某个时间点-07-12 17:30:00.000(工单第一次上传的时间)
--position=19的log最后时间点为-07-12 18:15:02.000
restore log SMT from disk='\\172.26.10.4\e$\BACKUP\172.26.10.3\SMT\LOG\SMT_LOG20100712.TRN'
with standby='D:\SQLDATA\UNDO_SMT.DAT',file=19,stopat='2010-07-12 17:30:00.000'