Kami menggunakan SQL Server dengan mode pemulihan penuh. Dengan cadangan lengkap dan serangkaian cadangan log, kami ingin dapat memeriksa apakah rantai log selesai dari cadangan penuh terakhir hingga log ekor saat ini. (Tanpa benar-benar mengembalikan cadangan ini; tujuannya di sini adalah untuk menguji konsistensi cadangan.)
Saya sudah tahu bagaimana melakukan ini untuk cadangan yang ada: menggunakan RESTORE HEADERONLY Saya mendapatkan FirstLSN dan LastLSN dari setiap file, yang dapat dibandingkan untuk file yang berurutan, untuk menentukan apakah mereka kompatibel.
Namun, saya tidak tahu bagaimana memeriksa apakah log ekor mengikuti cadangan log terakhir.
Jika saya memiliki FirstLSN dari log ekor, saya bisa membandingkannya dengan LastLSN dari cadangan log terakhir. Tetapi bagaimana saya bisa mendapatkan FirstLSN dari log ekor?
Saya memerlukan solusi yang bekerja dari SQL Server 2005 ke atas (idealnya menggunakan t-sql). Sejauh ini, saya telah mencari Google tetapi tidak berhasil. Btw. Saya pertama kali memposting ini di stackoverflow; tetapi bermigrasi di sini karena ditandai di luar topik di sana.
EDIT
Saya mencoba dua solusi yang diberikan pada contoh kecil (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
Jadi tampaknya yang pertama dimatikan oleh beberapa urutan besarnya.
Saya kemudian melakukan tes yang sama pada SQL 2008 SP1 (10.00.2531), di mana kedua kueri menghasilkan jawaban yang benar.