我有一份用于报告的异地生产数据库的副本,该数据库在SQL Server 2012上运行。我希望每小时用来自该异地生产数据库的事务日志更新它。
没什么大不了的,恢复完整备份(w / NORECOVERY
)以开始工作并应用事务日志(w / NORECOVERY
)。
但是,如果恢复(或获取日志文件)出现问题,我最终会得到几个事务日志文件,其中一些已经应用,另一些则没有。发生这种情况时,如何在TSQL脚本中找出要开始的文件?
我试着像这样查看恢复历史记录表:
select distinct
h.destination_database_name,
h.restore_date,
s.server_name,
m.physical_device_name as backup_device,
f.physical_name
from
msdb..restorehistory h
inner join
msdb..backupfile f on h.backup_set_id = f.backup_set_id
inner join
msdb..backupset s on f.backup_set_id = s.backup_set_id
inner join
msdb..backupmediafamily m on s.media_set_id = m.media_set_id
where
h.destination_database_name = 'mydb'
and h.restore_date > (GETDATE() -0.5)
order by
h.restore_date
但检查restorehistory并不好,因为NORECOVERY标志表示该表中没有添加任何记录。那么还有另一种方法可以通过T-SQL检查这个,它适用于NORECOVERY数据库吗?
答案 0 :(得分:0)
假设这是一种罕见的手动操作,最简单的方法是扫描错误日志。
SQL Server的内置日志传送(以及一些第三方实现)具有使这更简单的表,视图和用户界面。