我们正在使用具有完全恢复模式的 SQL Server。给定完整备份和一系列日志备份,我们希望能够检查从上次完整备份到当前尾日志的日志链是否完整。(没有实际恢复这些备份;这里的目的是测试备份的一致性。)
我已经知道如何对现有备份执行此操作:使用 RESTORE HEADERONLY 我获得每个文件的 FirstLSN 和 LastLSN,可以对连续文件进行比较,以确定它们是否兼容。
但是,我不知道如何检查尾部日志是否遵循上次日志备份。
如果我有尾日志的 FirstLSN,我可以将它与上次日志备份的 LastLSN 进行比较。但是如何获取尾日志的 FirstLSN 呢?
我需要一个适用于 SQL Server 2005 以上的解决方案(最好使用 t-sql)。到目前为止,我已经搜索过谷歌无济于事。顺便提一句。我首先在 stackoverflow 上发布了这篇文章;但是将它迁移到这里,因为它在那里被标记为离题。
编辑
我在一个小例子(SQL Server 2005,9.0.5057)上尝试了两个提供的解决方案:
BACKUP DATABASE TestDb TO DISK = 'C:\temp\backup test\Full.bak'
-- fire some update queries
BACKUP LOG TestDb TO DISK = 'C:\temp\backup test\Log1.bak'
-- fire both queries from the provided answers:
-- Martin Smith's answer yields: 838886656088920652852608
-- Shawn Melton's answer yields: 46000000267600001
RESTORE HEADERONLY FROM DISK = 'C:\temp\backup test\Log1.bak'
-- yields: 46000000267600001 …Run Code Online (Sandbox Code Playgroud)