原文:http://blog.csdn.net/tjvictor/article/details/5251463
日志序列編號(LSN)是事務日志里面每條記錄的編號。
當你執行一次備份時,一些LSN值就被同時存儲在文件本身及msdb..backupset表中。你可以使用RESTORE HEADERONLY語法來從備份文件中獲取LSN值。
注意:在SQL Server 2000中,有一列叫做DifferentialBaseLSN。但在SQL Server 2005中,相同的列名稱變成了DatabaseBackupLSN。正解的列名應該是DatabaseBackupLSN,這個名稱才能表達出它的意義,你可以從SQL Server 2000的聯機叢書中找到相關說明。
FirstFSN值是備份設備中第一個事務的日志序列號,LastLSN值是最后一個。CheckpointLSN值是最近一次checkpoint日志的序列號。DatabaseBackupLSN是最近一次數據庫完整備份的日志序列號。
那么LSN值對我們來說,有什么價值呢?對於差異備份設備來說,DatabaseBackupLSN值可以告訴我們數據庫完整備份都需要哪些差異備份。你需要找出所有CheckpointLSN值相同的完整備份和差異備份。
對於一個事務日志備份來說,在數據庫還原過程中,FirstLSN和LastLSN值可以幫助我們對事務日志文件按序號進行排序。
假如數據庫正處於還原狀態,而且正在等待另外的還原事務日志,那你怎么能分辨出它當前的LastLSN值,以便你自己清楚下一步應該應用哪個日志呢?沒關系,msdb..restorehistory表存儲了每一個數據庫還原信息。你可以引用msdb..backupset表,你可以找現存儲事務日志的最后一個事務日志備份,它的LastLSN查詢語句如下:
SELECT TOP 1 b.type, b.first_lsn, b.last_lsn, b.checkpoint_lsn, b.database_backup_lsn
FROM msdb..restorehistory a
INNER JOIN msdb..backupset b ON a.backup_set_id = b.backup_set_id
WHERE a.destination_database_name = 'AdventureWorks'
ORDER BY restore_date DESC
本文翻譯自sqlbackuprestore,更多精彩內容請瀏覽http://www.sqlbackuprestore.com