Sql-Server

事務日誌備份 - 只有完整恢復模式?

  • October 15, 2018

我正在閱讀Microsoft 的本書 - 它說:“除非數據庫處於完全恢復模式並且已執行初始完全備份,否則無法執行日誌備份”

它是否正確?我知道簡單恢復模型不支持事務日誌備份。但我想我在某處讀過完整和批量恢復模型支持事務日誌備份。

不,這是不正確的。

請參閱SQL Server 恢復模型

如果您使用的是 BULK 恢復模型,除了特定的最小記錄操作(SELECT INTO、BULK INSERT、CREATE INDEX…)之外,它的功能與 FULL 恢復模型相同

如果您不設置日誌備份,則可能會導致日誌文件被填滿。

除非數據庫處於完全恢復模式並且已執行初始完全備份,否則無法執行日誌備份

嚴格考慮作者的說法是正確的,這意味著如果數據庫處於完全恢復模式並且從創建數據庫或將數據庫恢復模式更改為完全恢復時沒有進行過完全備份,您不能進行日誌備份,它只會失敗。這是因為在完全恢復模式更改或創建數據庫時沒有進行完全備份來啟動事務日誌鏈。這樣的數據庫被稱為“偽簡單恢復模型”。除非進行完全備份,否則完全恢復模式中的數據庫實際上表現得非常簡單。SQLSkills.com 的 Paul Randal在此部落格中有更多詳細資訊

另外值得注意的是,從大容量日誌恢復模式切換回完整恢復模式後,可以備份事務日誌。

例如讓我們在完全恢復中創建一個數據庫並進行日誌備份,它會失敗看到螢幕

在此處輸入圖像描述

現在讓我們進行完整備份,將恢復模式更改為簡單,然後再次回到完整,並進行日誌備份,它會再次失敗

在此處輸入圖像描述

我相信這就是作者所說的。如果已採用完整備份來啟動鏈,您可以很好地採用完整和批量日誌恢復模式的事務日誌備份。

現在對批量記錄執行相同的操作,在完全恢復模式下創建一個新數據庫,執行一些事務並將恢復更改為 bulk_logged,然後返回完全恢復。現在執行日誌備份它會失敗說

消息 4214,級別 16,狀態 1,第 9 行 BACKUP LOG 無法執行,因為目前沒有數據庫備份。消息 3013,級別 16,狀態 1,第 9 行備份日誌異常終止。


但我想我在某處讀過完整和批量恢復模型支持事務日誌備份

是正確的,條件是在更改為完全恢復或創建數據庫後,至少進行了一次完全備份以啟動日誌鏈

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