SQL Server數據庫事務日誌序列號(LSN)介紹

日誌序列編號(LSN)是事務日誌裏面每條記錄的編號。數據庫

當你執行一次備份時,一些LSN值就被同時存儲在文件自己及msdb..backupset表中。你能夠使用RESTORE HEADERONLY語法來從備份文件中獲取LSN值。 ide

 

 

注意:在SQL Server 2000中,有一列叫作DifferentialBaseLSN。但在SQL Server 2005中,相同的列名稱變成了DatabaseBackupLSN。正解的列名應該是DatabaseBackupLSN,這個名稱才能表達出它的意義,你能夠從SQL Server 2000的聯機叢書中找到相關說明。.net

FirstLSN值是備份設備中第一個事務的日誌序列號,LastLSN值是最後一個。CheckpointLSN值是最近一次checkpoint日誌的序列號。DatabaseBackupLSN是最近一次數據庫完整備份的日誌序列號。rest

那麼LSN值對咱們來講,有什麼價值呢?對於差別備份設備來講,DatabaseBackupLSN值能夠告訴咱們數據庫完整備份都須要哪些差別備份。你須要找出全部CheckpointLSN值相同的完整備份和差別備份。日誌

 

 

對於一個事務日誌備份來講,在數據庫還原過程當中,FirstLSN和LastLSN值能夠幫助咱們對事務日誌文件按序號進行排序。blog

 

 

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

相關文章
相關標籤/搜索