Ми використовуємо SQL Server у повному режимі відновлення. З огляду на повне резервне копіювання та серію резервних копій журналу, ми хотіли б мати можливість перевірити, чи є ланцюг журналів завершеним від останнього повного резервного копіювання до поточного журналу хвоста. (Без фактичного відновлення цих резервних копій; мета тут - перевірити узгодженість резервних копій.)
Я вже знаю, як це зробити для існуючих резервних копій: за допомогою RESTORE HEADERONLY я отримую FirstLSN та LastLSN кожного файлу, який можна порівняти для послідовних файлів, щоб визначити, чи сумісні вони.
Однак я не знаю, як перевірити, чи відповідає журнал хвоста за останньою резервною копією журналу.
Якби у мене був FirstLSN хвостового журналу, я міг би порівняти його з LastLSN останньої резервної копії журналу. Але як я можу отримати FirstLSN хвостового журналу?
Мені потрібно рішення, яке працює від SQL Server 2005 вгору (в ідеалі використовуючи t-sql). Поки що я шукав Google безрезультатно. Btw. Я вперше опублікував це на stackoverflow; але перенесли його сюди, оскільки там було позначено поза темою.
EDIT
Я спробував два надані рішення на невеликому прикладі (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
Отож, схоже, перший вимикається на кілька порядків.
Потім я зробив той самий тест на SQL 2008 SP1 (10.00.2531), де обидва запитання дали правильну відповідь.