Stiamo usando SQL Server con la modalità di recupero completo. Dato un backup completo e una serie di backup del registro, vorremmo essere in grado di verificare se la catena di registro è completa dall'ultimo backup completo al registro di coda corrente. (Senza ripristinare effettivamente questi backup; lo scopo qui è testare la coerenza dei backup.)
So già come farlo per i backup esistenti: utilizzando RESTORE HEADERONLY ottengo il FirstLSN e LastLSN di ogni file, che possono essere confrontati per file consecutivi, al fine di determinare se sono compatibili.
Tuttavia, non so come verificare se il registro di coda segue l'ultimo backup del registro.
Se avessi il FirstLSN del registro di coda, potrei confrontarlo con il LastLSN dell'ultimo backup del registro. Ma come posso ottenere il FirstLSN del registro di coda?
Ho bisogno di una soluzione che funzioni da SQL Server 2005 (idealmente usando t-sql). Finora ho cercato Google senza risultati. Btw. L'ho pubblicato per la prima volta su StackOverflow; ma è migrato qui poiché è stato contrassegnato off-topic lì.
MODIFICARE
Ho provato le due soluzioni fornite su un piccolo esempio (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
Quindi sembra che il primo sia spento di diversi ordini di grandezza.
Ho quindi fatto lo stesso test su SQL 2008 SP1 (10.00.2531), in cui entrambe le query hanno prodotto la risposta corretta.