Nous utilisons SQL Server avec le mode de récupération complète. Étant donné une sauvegarde complète et une série de sauvegardes de journaux, nous aimerions pouvoir vérifier si la chaîne de journaux est complète depuis la dernière sauvegarde complète jusqu'au journal de queue actuel. (Sans réellement restaurer ces sauvegardes; le but ici est de tester la cohérence des sauvegardes.)
Je sais déjà comment procéder pour les sauvegardes existantes: en utilisant RESTORE HEADERONLY, j'obtiens le FirstLSN et le LastLSN de chaque fichier, qui peuvent être comparés pour des fichiers consécutifs, afin de déterminer s'ils sont compatibles.
Cependant, je ne sais pas comment vérifier si le journal de queue suit la dernière sauvegarde du journal.
Si j'avais le FirstLSN du journal de queue, je pourrais le comparer au LastLSN de la dernière sauvegarde du journal. Mais comment puis-je obtenir le FirstLSN du journal de queue?
J'ai besoin d'une solution qui fonctionne à partir de SQL Server 2005 (en utilisant idéalement t-sql). Jusqu'à présent, j'ai cherché sur Google en vain. Btw. J'ai d'abord publié ceci sur stackoverflow; mais il a migré ici car il a été signalé hors sujet là-bas.
ÉDITER
J'ai essayé les deux solutions fournies sur un petit exemple (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
Il semble donc que le premier soit décalé de plusieurs ordres de grandeur.
J'ai ensuite fait le même test sur SQL 2008 SP1 (10.00.2531), où les deux requêtes ont donné la bonne réponse.