結尾記錄備份
本主題僅與使用完整或大量記錄復原模式的資料庫有關。
在完整模式或大量記錄復原模式下,SQL Server 2005 及更新的版本多半會要求您備份記錄的結尾,以便擷取尚未備份的記錄檔記錄。在還原作業之前對記錄結尾進行的記錄備份,就稱為「結尾記錄備份」。
SQL Server 2005 及更新的版本通常會要求您在開始還原資料庫之前進行結尾記錄備份。結尾記錄備份可防止工作遺失,並保持記錄鏈結完整。當您將資料庫復原到失敗點時,結尾記錄備份是復原計畫中重要的最後備份。如果您無法備份記錄的結尾,則只能將資料庫復原到失敗前建立的最後一個備份的結尾。
並不是所有的還原實例都需要結尾記錄備份。如果復原點已包含在較早的記錄備份中,或者您要移動或取代 (覆寫) 資料庫,就不需要有結尾記錄備份,而且不需要將它還原至最近備份之後的某個時間點。此外,如果記錄檔損毀,而且無法建立結尾記錄備份,您也必須在不使用結尾記錄備份的情況下還原資料庫。任何在最近一次記錄備份之後認可的交易都會遺失。如需詳細資訊,請參閱本主題稍後的「不使用結尾記錄備份而進行還原」。
備份記錄檔的結尾
就像任何記錄備份一樣,結尾記錄備份是使用 BACKUP LOG 陳述式所進行的。我們建議您在下列情況中進行結尾記錄備份:
如果資料庫在線上,而且您打算執行資料庫的還原作業,請在開始還原作業之前,先使用 WITH NORECOVERY 備份記錄結尾:
BACKUP LOG <database_name> TO <backup_device> WITH NORECOVERY
[!附註]
為了避免錯誤,NORECOVERY 選項是必要的。
如果資料庫離線而且未啟動。
嘗試進行結尾記錄備份。因為這段時間不會發生交易,使用 WITH NORECOVERY 是選擇性的。如果資料庫受損,請使用 WITH CONTINUE_AFTER_ERROR,如下所示:
BACKUP LOG database_name TO <backup_device> WITH CONTINUE_AFTER_ERROR
如果資料庫受損 (例如,資料庫未啟動),則只有在記錄檔未損壞、資料庫處於支援結尾記錄備份的狀態,以及資料庫沒有包含任何大量記錄變更時,結尾記錄備份才會成功。
下表彙總這些選項。
BACKUP LOG 選項 |
註解 |
---|---|
NORECOVERY |
每當您打算在資料庫上繼續還原作業時,請使用 NORECOVERY。NORECOVERY 會讓資料庫進入還原狀態。這樣可以保證資料庫不會在結尾記錄備份之後變更。 除非也指定了 NO_TRUNCATE 選項或 COPY_ONLY 選項,否則會截斷記錄。
重要事項
除非資料庫受損,否則建議您避免使用 NO_TRUNCATE。
|
CONTINUE_AFTER_ERROR |
只有在您要備份受損資料庫的結尾時,才使用 CONTINUE_AFTER_ERROR。
附註
當您在受損資料庫上使用結尾記錄備份時,一般可在記錄備份中擷取到的某些中繼資料可能無法使用。如需詳細資訊,請參閱本主題稍後的「具有不完整備份中繼資料的結尾記錄備份」。
|
若要在資料庫損毀時建立交易記錄備份
具有不完整備份中繼資料的結尾記錄備份
即使資料庫離線、損毀或遺漏資料檔案,結尾記錄備份還是會擷取記錄檔的結尾。這可能會導致還原資訊命令和 msdb 產生不完整的中繼資料。不過,只有中繼資料不完整,所擷取的記錄仍然完整可用。
如果結尾記錄備份具有不完整的中繼資料,backupset 資料表中的 has_incomplete_metadata 會設為 1。此外,在 RESTORE HEADERONLY 的輸出中,HasIncompleteMetadata 也會設為 1。
如果結尾記錄備份的中繼資料不完整,backupfilegroup 資料表將會遺失有關檔案群組在結尾記錄備份期間的大部分資訊。大部分 backupfilegroup 資料表資料行為 NULL,只有下列資料行具有意義:
backup_set_id
filegroup_id
type
type_desc
is_readonly
不使用結尾記錄備份而進行還原
不需要結尾記錄備份的還原實例包括:
將資料庫還原到包含在上一個記錄備份中的時間點。
如果您要還原資料庫,並且在還原順序的每個 RESTORE 陳述式中指定 STOPAT、STOPATMARK 或 STOPBEFOREMARK 選項,就不需要結尾記錄備份。
若要將資料庫還原到更早的時間點
若要使用 Transact-SQL 還原到特定的時間點,請參閱<如何:還原到某個時間點 (Transact-SQL)>、<復原到標示的交易>或<復原到記錄序號 (LSN)>。
若要使用 SQL Server Management Studio,請參閱<如何:還原到某個時間點 (SQL Server Management Studio)>或<如何:還原資料庫至標示的交易 (SQL Server Management Studio)>。
將資料庫副本還原到新位置。
還原資料庫時,只有在您要將資料庫還原到不同的伺服器執行個體時 (例如,當您建立鏡像資料庫以進行資料庫鏡像,或建立次要資料庫以進行記錄傳送時),才可以使用相同的資料庫名稱。如果是在相同的伺服器執行個體上移動資料庫,則必須為資料庫指定新的名稱。
若要將資料庫還原到新位置
使用 Transact-SQL,在還原順序的每個 RESTORE 陳述式中指定 MOVE 選項。如需詳細資訊,請參閱<如何:使用新的位置和名稱還原資料庫 (Transact-SQL)>或<如何:將檔案還原到新位置 (Transact-SQL)>。
使用 SQL Server Management Studio,在 [還原資料庫] ([選項] 頁面) 的 [還原成] 欄位中指定每個檔案的新位置。如需詳細資訊,請參閱<如何:還原資料庫備份 (SQL Server Management Studio)>。
完全取代 (覆寫) 資料庫。
注意 REPLACE 選項不應經常使用,且只應由有經驗的資料庫管理員在審慎考量後使用。如需詳細資訊,請參閱<使用 REPLACE 選項>。
若要取代資料庫
使用 Transact-SQL,在 RESTORE 陳述式中指定 REPLACE 選項。
使用 SQL Server Management Studio,在 [還原資料庫] ([選項] 頁面) 的 [還原成] 欄位中指定每個檔案的新位置。如需詳細資訊,請參閱<如何:還原資料庫備份 (SQL Server Management Studio)>。
變更記錄
更新的內容 |
---|
已更新<備份記錄檔的結尾>一節,更正有關資料庫離線而且無法啟動時採用結尾記錄備份的資訊。 |