如何:還原到某個時間點 (Transact-SQL)

此主題解釋如何還原到某個時間點。

還原到某個時間點

  1. 使用 NORECOVERY 選項執行 RESTORE DATABASE 陳述式。

    [!附註]

    如果部分還原順序排除任何 FILESTREAM 檔案群組,則不支援時間點還原。您可以強制還原順序,以繼續進行。但是,絕對無法還原 RESTORE 陳述式中省略的 FILESTREAM 檔案群組。若要強制時間點還原,請指定 CONTINUE_AFTER_ERROR 選項,連同 STOPAT、STOPATMARK 或 STOPBEFOREMARK 選項,而且您也必須在後續的 RESTORE LOG 陳述式中指定這些項目。如果您指定 CONTINUE_AFTER_ERROR,則部分還原順序會成功,而 FILESTREAM 檔案群組則會變成無法復原。

  2. 執行 RESTORE LOG 陳述式以套用每一個交易記錄備份,並指定:

    • 要套用交易記錄檔的資料庫名稱。

    • 要從其還原交易記錄備份的備份裝置。

    • RECOVERY 及 STOPAT 選項。如果交易記錄備份中不含所要求的時間 (例如,指定的時間超出交易記錄的結束時間),則會產生警告訊息,且此資料庫會維持未復原狀態。

範例

下列範例會將資料庫還原至 April 15, 202012:00 AM 時的狀態,並顯示含有多個記錄備份的還原作業。在備份裝置 AdventureWorks2008R2Backups 上,要還原的完整資料庫備份是裝置上的第三個備份組 (FILE = 3),第一個記錄備份是第四個備份組 (FILE = 4),而第二個記錄備份是第五個備份組 (FILE = 5)。

重要事項重要事項

AdventureWorks2008R2 資料庫使用簡單復原模式。若要允許記錄備份,在執行完整資料庫備份之前,請使用 ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL 將該資料庫設定為使用完整復原模式。

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2008R2 WITH RECOVERY; 
GO