回應由損毀備份造成的 SQL Server 還原錯誤

備份媒體損毀時會發生還原錯誤。此還原錯誤可能會由作業系統報告,或是由總和檢查碼偵測到。不論何種情形,您有三種選擇:

  • 更正錯誤並重新啟動還原作業。

  • 忽略錯誤繼續還原,並在還原完成之後修復資料庫。

  • 放棄還原作業,並使用替代復原計畫來避開損毀的備份。

[!附註]

媒體集或備份組必須包含可解譯為 Microsoft Tape Format 的最少量正確資訊。如果不是這樣,RESTORE 會停止並指出備份格式無效。

更正並重新啟動還原作業

您可以利用下列方式來處理錯誤:

  • 如果是磁帶裝置發生錯誤,您可以清除或更換磁帶機。

  • 如果是磁碟裝置發生錯誤,您可以解決裝置錯誤並取代損毀的檔案。

  • 如果是鏡像媒體集,您可以使用另一個鏡像中相對應的媒體來取代損毀的媒體。

忽略錯誤繼續進行

警告注意事項警告

在 RESTORE 陳述式中指定 WITH CONTINUE_AFTER_ERROR,便會嘗試還原資料庫。不過,有許多種損毀狀況會阻止復原資料庫。我們強烈建議,除非您別無他法可用,否則先不要使用 CONTINUE_AFTER_ERROR 選項。

CONTINUE_AFTER_ERROR 選項會讓還原作業忽略錯誤繼續執行,盡可能地進行還原。發生向前復原,而且您可以套用後續的交易記錄備份。如果向前復原發生錯誤,因而無法到達目標時間點,則會在記錄中指出這個錯誤。資料庫會盡可能在復原點回到線上。但是如果無法完成復原,資料庫就會保持離線。

遺失的資料量,視所發生的錯誤而定。例如,分頁上錯誤的總和檢查碼只會造成該分頁有問題,仍然可以繼續讀取和處理媒體。相反地,磁帶裝置報告的 I/O 錯誤就無法忽略錯誤並繼續讀取,此錯誤會導致無法還原剩餘的磁帶。

指定在發生錯誤後繼續還原時,驗證失敗的分頁會寫入磁碟,並記錄在 suspect_pages 資料表和錯誤記錄中。

**最佳作法:**在使用 WITH CONTINUE_AFTER_ERROR 還原資料之後,請檢查錯誤記錄以取得錯誤的詳細資料。此外,還要儲存並分析您直接從 RESTORE 陳述式取得的所有訊息。

若要繼續忽略錯誤

基本的 RESTORE 語法為:

RESTORE DATABASE database_name FROM <backup_device> WITH CONTINUE_AFTER_ERROR, [ NORECOVERY ]

管理離線資料庫

在可以忽略錯誤而繼續執行的還原順序結束時,您可以使用 DBCC CHECKDB 來修復資料庫。若要讓 CHECKDB 在使用 RESTORE CONTINUE_AFTER_ERROR 後能夠以最一致的方式執行,建議您在 DBCC CHECKDB 命令中使用 WITH TABLOCK 選項。如需詳細資訊,請參閱<DBCC CHECKDB (Transact-SQL)>。所有的修復選項都可以使用。若想瞭解所需的最小修復層級,請執行 DBCC CHECKDB,且不指定修復選項。請注意,在最極端的情況下,可能會沒有足夠的資訊可供修復資料庫。

若要取得資料原有的有限存取權,您可以使用 ALTER DATABASE 命令的 EMERGENCY 選項將資料庫設為緊急模式。