Sql-Server

崩潰恢復過程如何在 SQL Server 中工作?

  • December 26, 2020

我想問一個關於恢復數據庫操作時的恢復過程的問題。假設我用 恢復了一個完整備份,NORECOVERY然後用 .恢復了兩個 t-log 備份NORECOVERY。最後,我將使用RECOVERY關鍵字恢復最後的第三個 t-log 備份。

問題是:當我使用RECOVERY關鍵字恢復最後一個 t-log 備份時,SQL Server 是執行重做和撤消階段還是只執行撤消階段?

在我看來,當我們使用NORECOVERY關鍵字恢復備份時,SQL Server 也會執行重做階段。使用備用關鍵字恢復 t-log 備份也是如此。在這種情況下,SQL Server 會創建一個單獨的文件,其名稱只包含“ undo ”而不是任何“ redo ”。

RESTORE 語句文件的 RECOVERY 和 NORECOVERY部分的比較應該可以幫助您解決這個問題:

回滾由 RESTORE 語句通過

$$ RECOVERY | NORECOVERY $$選項:

  • NORECOVERY 指定不發生回滾。這允許前滾繼續執行序列中的下一條語句。

在這種情況下,還原序列可以還原其他備份並將它們前滾。

  • RECOVERY(預設值)指示應在目前備份的前滾完成後執行回滾。

恢復數據庫要求被恢復的整個數據集(前滾集)與數據庫一致。如果前滾集沒有前滾到足以與數據庫一致並且指定了 RECOVERY,則數據庫引擎會發出錯誤。

引用自:https://dba.stackexchange.com/questions/282156