SQL Server資料庫事務日誌序列號(LSN)介紹

隨夢而飛發表於2015-04-23

原文: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值相同的完整備份和差異備份。

對於一個事務日誌備份來說,在資料庫還原過程中,FirstLSNLastLSN值可以幫助我們對事務日誌檔案按序號進行排序。

假如資料庫正處於還原狀態,而且正在等待另外的還原事務日誌,那你怎麼能分辨出它當前的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

相關文章