復原至特定的時間點

這個主題僅與使用完整模式或大量記錄復原模式的 SQL Server 資料庫有關。

在大量記錄復原模式下,如果記錄備份包含大量記錄的變更,則時間點復原不可能復原至該備份內的時間點。資料庫必須復原至交易記錄備份的結尾。

若要還原至特定時間

復原到特定時間的 Transact-SQL 語法

指定的時間一律是從記錄備份中還原。在還原順序的每個 RESTORE LOG 陳述式中,您必須在相同的 STOPAT 子句中指定目標時間或交易。您必須先還原其端點早於目標還原時間的完整資料庫備份,當做時間點還原的必要條件。該完整資料庫備份可以晚於最近的完整資料庫備份,只要您之後還原每個後續的記錄備份即可,最多並包括含有目標時間點的記錄備份。

若要協助您識別要還原哪個資料庫備份,可以選擇性地在 RESTORE DATABASE 陳述式中指定 WITH STOPAT 子句,以便在資料庫備份太接近指定的目標時間時引發錯誤。此時,系統一定會還原完整的資料備份,即使它包含目標時間也一樣。

基本語法如下:

RESTORE LOG database_name FROM <backup_device> WITH STOPAT =time, RECOVERY…

復原點是在由 &lt;time&gt; 指定的 datetime 值當時或之後所發生的最近一次交易認可。

若只要還原特定時間點之前所做的修改,請為您要還原的每個備份指定 WITH STOPAT =&lt;time&gt;。這樣可確保您不會還原到超過目標時間。

一般而後言,時間點還原順序涉及下列階段:

  • 在尚未復原資料庫的情況下,還原上一次的完整資料庫備份,若上次有差異資料庫備份則一併還原 (RESTORE DATABASE &lt;database_name&gt; FROM &lt;backup_device&gt; WITH NORECOVERY)。

  • 依相同順序 (建立備份的順序) 套用每個交易記錄備份,並指定預計要停止還原記錄的時間 (RESTORE DATABASE &lt;database_name&gt; FROM <backup_device> WITH STOPAT**=time,** RECOVERY)。

如需詳細資訊,請參閱<將資料庫還原到備份中的時間點>。