Sql-Server
崩潰恢復過程如何在 SQL Server 中工作?
我想問一個關於恢復數據庫操作時的恢復過程的問題。假設我用 恢復了一個完整備份,
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,則數據庫引擎會發出錯誤。