回應由損毀備份造成的 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 選項將資料庫設為緊急模式。