許多人認為:記錄鏈斷裂後(如切換至簡單復原模式、使用 BACKUP LOG WITH NO_LOG/TRUNCATE_ONLY、鏡像容錯移轉),必須執行完整備份才能重新開始記錄備份。
只要差異備份的跨度涵蓋記錄鏈斷裂的 LSN 間隙,即可作為新的差異基準,讓後續記錄備份成功。
CREATE DATABASE LogChainTest; GO
ALTER DATABASE LogChainTest SET RECOVERY FULL; GO
BACKUP DATABASE LogChainTest TO DISK = 'C:\LogChainTest.bck' WITH INIT; GO
BACKUP LOG LogChainTest TO DISK = 'C:\LogChainTest_log1.bck' WITH INIT; GO
-- 破壞記錄鏈
ALTER DATABASE LogChainTest SET RECOVERY SIMPLE; GO
ALTER DATABASE LogChainTest SET RECOVERY FULL; GO
-- 嘗試記錄備份 → 失敗:Msg 4214,無目前資料庫備份
BACKUP LOG LogChainTest TO DISK = 'C:\LogChainTest_log2.bck' WITH INIT; GO
-- 關鍵:執行差異備份(涵蓋斷裂間隙)
BACKUP DATABASE LogChainTest TO DISK = 'C:\LogChainTest_diff.bck' WITH INIT, DIFFERENTIAL; GO
-- 再次嘗試記錄備份 → 成功!
BACKUP LOG LogChainTest TO DISK = 'C:\LogChainTest_log3.bck' WITH INIT; GO
若備份策略包含檔案/檔案組備份,甚至只需單一檔案的差異備份即可重新啟動記錄鏈(前提同樣是跨度涵蓋斷裂 LSN)。
NO_LOG/TRUNCATE_ONLY(2008 已移除)、鏡像容錯移轉、BACKUP LOG WITH NORECOVERY 等。