SQL Server 2012 - 查找已应用于NORECOVER数据库的事务日志

时间:2016-04-27 23:36:41

标签: sql-server tsql sql-server-2012

我有一份用于报告的异地生产数据库的副本,该数据库在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数据库吗?

1 个答案:

答案 0 :(得分:0)

假设这是一种罕见的手动操作,最简单的方法是扫描错误日志。

SQL Server的内置日志传送(以及一些第三方实现)具有使这更简单的表,视图和用户界面。