將資料庫還原到備份中的時間點

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

您可能會想要將資料庫還原並復原到失敗點之前的特定時間點、標示或記錄序號 (LSN)。例如,若交易做了某些錯誤的資料變更,您可能會想要將資料庫還原至輸入錯誤資料之前的復原點。任何指定資料庫復原點的還原作業就稱為「時間點還原」。

下圖將顯示如何還原到交易記錄中間的復原點 (建立時間 t9)。針對這個備份的其餘部分以及後續記錄備份 (建立時間 t10) 所做的變更都會被捨棄。

還原記錄備份當中的點

指定目標復原點時,可使用下列其中一項:

  • 交易記錄中的特定時間點。

  • 已插入交易記錄中的具名標示。

  • 記錄序號 (LSN)。

[!附註]

「復原到 LSN」是為工具供應商提供的特定功能,未必普遍適用。

指定的時間或交易一律會從記錄備份中還原,所以目標復原點必須包含在交易記錄備份中。若要將資料庫還原至特定時間點或交易,請在 STOPAT、STOPATMARK 或 STOPBEFOREMARK 子句中指定目標復原點。在還原順序的每個 RESTORE LOG 陳述式中,您必須在相同的 STOPAT、STOPATMARK 或 STOPBEFOREMARK 子句中指定目標時間或交易。當您套用包含復原點的記錄備份時,就只能復原該點前面的交易。

您必須先還原其端點早於目標復原點的完整資料庫備份,當做時間點還原的必要條件。若要協助您識別要還原哪個資料庫備份,可以選擇性地在 RESTORE DATABASE 陳述式中指定 WITH STOPAT、STOPATMARK 或 STOPBEFOREMARK 子句,以便在資料庫備份太接近指定的目標時間時引發錯誤。不過,系統一定會還原完整的資料備份,即使它包含目標時間也一樣。

[!附註]

記錄備份與要在時間點還原順序開始時還原的完整資料庫或部分備份,也必須位於相同的復原路徑

當復原完成時,資料庫的時間是由您復原主要檔案所達到的復原點來決定。若有任何後續的還原作業,其復原點都必須與那時候的資料庫一致。

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

[!附註]

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

本章節內容