套用交易記錄備份
本主題僅與完整復原模式和大量記錄復原模式有關。
此主題描述如何在還原 SQL Server 資料庫的過程中套用交易記錄備份。若要套用交易記錄備份,必須符合下列需求:
首先必須還原最新的完整資料庫備份或差異資料庫備份。
必須依時間先後順序,還原在該完整或差異資料庫備份之後建立的所有交易記錄。如果這個記錄鏈結中的某個交易記錄備份遺失或損毀,您只能還原該遺漏的交易記錄之前的交易記錄。
尚未復原資料庫。直到套用了最後一個交易記錄之後,才能復原資料庫。如果您只還原了其中一個中繼交易記錄備份 (尚未到達記錄鏈結的尾端) 之後便復原資料庫,則您無法還原該時間點之後的資料庫,除非您以完整資料庫備份開始重新啟動整個還原順序。
復原與交易記錄
當您完成還原作業並復原資料庫時,復原作業會回復所有未完成的交易。此即稱為「恢復階段」。需要進行回復,才能還原資料庫的完整性。回復之後,資料庫會上線,而且不再有交易記錄備份可以套用到資料庫。
例如,一系列交易記錄備份中包含長時間執行的交易。該交易的開頭記錄在第一個交易記錄備份,但是交易的結尾記錄在第二個交易記錄備份。那麼一個交易記錄備份中將沒有認可或回復作業的記錄。如果在套用第一個交易記錄備份時執行復原作業,則會將長時間執行的交易視為未完成,並且回復在交易的第一個交易記錄備份中記錄的資料修改。SQL Server 不允許在此時間點之後套用第二個交易記錄備份。
[!附註]
在某些狀況下,您可以在記錄還原期間明確加入檔案。如需詳細資訊,請參閱<控制向前復原期間加入檔案的建立>。
使用記錄備份還原到失敗點
假設發生下列事件順序。
時間 |
事件 |
---|---|
上午 8:00 |
備份資料庫以建立完整資料庫備份。 |
中午 |
備份交易記錄。 |
下午 4:00 |
備份交易記錄。 |
下午 6:00 |
備份資料庫以建立完整資料庫備份。 |
下午 8:00 |
備份交易記錄。 |
下午 9:45 |
發生故障。 |
[!附註]
如需這個備份順序範例的解釋,請參閱<建立交易記錄備份>。
若要將資料庫還原到下午 9:45 (失敗點) 時的狀態,可以使用下列任一個替代程序:
替代程序 1:使用最新的完整資料庫備份來還原資料庫
將目前使用者中交易記錄的結尾記錄備份建立為失敗點。
不要還原上午 8:00 的完整資料庫備份。而是還原下午 6:00 的最新完整資料庫備份,然後套用下午 8:00 的記錄備份及結尾記錄備份。
替代程序 2:使用較早的完整資料庫備份來還原資料庫
[!附註]
如果發生問題,讓您無法使用下午 6:00 的完整資料庫備份,這個替代程序會很有用。比起從下午 6:00 的完整資料庫備份進行還原,這個程序需要更多的時間。
將目前使用者中交易記錄的結尾記錄備份建立為失敗點。
還原上午 8:00 的完整資料庫備份,然後依序還原全部四個交易記錄備份。如此即可將下午 9:45 前完成的所有交易都向前復原。
這個替代程序指出維護一系列完整資料庫備份的交易記錄備份鏈結可以提供的額外安全性。
套用交易記錄備份
最佳作法就是使用 WITH NORECOVERY 來還原所有的記錄備份:
RESTORE LOG <database_name> FROM <backup_device> WITH NORECOVERY
然後,在還原最後一個記錄備份之後,以個別的作業來復原資料庫:
RESTORE DATABASE <database_name> WITH RECOVERY
套用交易記錄備份
還原到您的復原點