尾記錄備份 (SQL Server)

適用於:SQL Server

本文僅適用于使用完整或大量記錄復原模式之 SQL Server 資料庫的備份和還原。

尾記錄備份 會擷取尚未備份的任何記錄檔記錄( 記錄 尾部),以防止工作遺失,並保留記錄鏈結。 將 SQL Server 資料庫復原到最新時間點之前,必須備份其交易記錄的結尾。 尾記錄備份是資料庫復原計畫中感興趣的最後一個備份。

並不是所有的還原實例都需要結尾記錄備份。 如果復原點包含在先前的記錄備份中,則不需要尾記錄備份。 如果您要移動或取代資料庫,且不需要將尾記錄備份還原到其最新備份之後的時間點,則不需要進行尾記錄備份。

需要尾記錄備份的案例

建議您在下列實例中進行結尾記錄備份:

  • 如果資料庫在線上,而且您打算執行資料庫的還原作業,請從備份記錄結尾開始。 若要避免線上資料庫發生錯誤,您必須使用 WITH NORECOVERY BACKUP Transact-SQL 語句的選項

  • 如果資料庫離線且無法啟動,並且需要還原資料庫,請先備份記錄結尾。 因為目前無法發生任何交易,請使用 WITH NO_TRUNCATE 選項。 NO_TRUNCATE 實際上與 僅複製交易記錄備份 相同。 使用 WITH NORECOVERY 是選擇性的,因為目前不會發生任何交易。

  • 如果資料庫損毀,請嘗試使用 WITH CONTINUE_AFTER_ERROR 語句的 BACKUP 選項進行尾記錄備份。

    在損毀的資料庫上,只有在記錄檔未損毀時,備份記錄檔的尾端才能成功,資料庫處於支援尾記錄備份的狀態,而且資料庫不包含任何大容量記錄的變更。 如果無法建立尾記錄備份,在最新的記錄備份之後認可的任何交易都會遺失。

下表摘要說明 NORECOVERY 的 、 NO_TRUNCATECONTINUE_AFTER_ERROR 選項 BACKUP

BACKUP LOG 選項 註解
NORECOVERY 每當您想要繼續進行資料庫的還原作業時,請使用 NORECOVERYNORECOVERY 會讓資料庫進入還原狀態。 此步驟可確保資料庫不會在尾記錄備份之後變更。 除非也指定選項或 COPY_ONLY 選項, NO_TRUNCATE 否則記錄檔會遭到截斷。

重要事項: 避免使用 NO_TRUNCATE ,但資料庫損毀或離線時除外。 您可能需要將資料庫 放入單一使用者模式 ,才能取得獨佔存取權,再使用 NORECOVERY 執行還原。 還原之後,請將資料庫設回多使用者模式。
CONTINUE_AFTER_ERROR 只有在備份損毀資料庫的尾端時,才使用 CONTINUE_AFTER_ERROR

當您備份損毀資料庫的記錄尾端時,通常擷取在記錄備份中的部分中繼資料可能無法使用。 如需詳細資訊,請參閱一節。

具有不完整備份中繼資料的尾記錄備份

即使資料庫離線、損毀或遺漏資料檔案,結尾記錄備份還是會擷取記錄檔的結尾。 這可能會導致還原資訊命令和 msdb 的中繼資料不完整。 不過,只有中繼資料不完整,所擷取的記錄仍然完整可用。

如果尾記錄備份具有不完整的中繼資料,則會在 backupset 資料表中 設定為 1has_incomplete_metadata 此外,在 RESTORE HEADERONLY 的 輸出中, HasIncompleteMetadata 會設定為 1

如果尾記錄備份中的中繼資料不完整, backupfilegroup 資料表會在尾記錄備份時遺漏檔案群組的大部分相關資訊。 backupfilegroup大部分的資料表資料行都是 NULL ;唯一有意義的資料行如下:

  • backup_set_id
  • filegroup_id
  • type
  • type_desc
  • is_readonly

相關工作

若要建立結尾記錄備份,請參閱資料庫損毀時備份交易記錄 (SQL Server)

若要還原交易記錄備份,請參閱還原交易記錄備份 (SQL Server)