Chúng tôi đang sử dụng SQL Server với chế độ phục hồi đầy đủ. Đưa ra một bản sao lưu đầy đủ và một loạt các bản sao lưu nhật ký, chúng tôi muốn có thể kiểm tra xem chuỗi nhật ký đã hoàn thành từ bản sao lưu đầy đủ cuối cùng đến nhật ký đuôi hiện tại hay chưa. (Không thực sự khôi phục các bản sao lưu này; mục đích ở đây là để kiểm tra tính nhất quán của các bản sao lưu.)
Tôi đã biết cách thực hiện việc này cho các bản sao lưu hiện có: sử dụng RESTORE HeaderONLY Tôi nhận FirstLSN và LastLSN của mỗi tệp, có thể so sánh cho các tệp liên tiếp, để xác định xem chúng có tương thích hay không.
Tuy nhiên, tôi không biết cách kiểm tra xem nhật ký đuôi có theo bản sao lưu nhật ký cuối cùng hay không.
Nếu tôi có FirstLSN của nhật ký đuôi, tôi có thể so sánh nó với LastLSN của bản sao lưu nhật ký cuối cùng. Nhưng làm thế nào tôi có thể có được FirstLSN của nhật ký đuôi?
Tôi cần một giải pháp hoạt động từ SQL Server 2005 trở lên (lý tưởng nhất là sử dụng t-sql). Cho đến nay, tôi đã tìm kiếm Google vô ích. Btw. Lần đầu tiên tôi đăng bài này lên stackoverflow; nhưng di chuyển nó ở đây vì nó được gắn cờ ngoài chủ đề ở đó.
BIÊN TẬP
Tôi đã thử hai giải pháp được cung cấp trên một ví dụ nhỏ (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
Vì vậy, nó xuất hiện cái đầu tiên bị tắt bởi một số đơn đặt hàng cường độ.
Sau đó, tôi đã thực hiện bài kiểm tra tương tự trên SQL 2008 SP1 (10:00.2531), trong đó cả hai truy vấn đều cho câu trả lời đúng.