備份系統數據庫的實際目的是什麼?
我知道系統數據庫保存登錄、安全資訊、工作等。
假設我已經備份了所有系統和使用者數據庫,並且 SQL 伺服器崩潰了,那麼我將不得不重新安裝將擁有自己的系統數據庫的 SQL 伺服器。將與崩潰伺服器相關的系統數據庫備份恢復到新伺服器上是沒有意義的(我認為這甚至是不允許的)。
那麼,備份系統數據庫的實際目的是什麼?
您可以將每個系統數據庫恢復到新安裝並備份它們,這樣您就可以保存所有實例級數據。唯一的例外是
tempdb
它是短暫的並且不可恢復,因為顧名思義,它是用於臨時儲存的。該
master
數據庫包含有關您的所有登錄資訊和任何其他系統級資訊。msdb
包含與 SQL 代理相關的所有資訊,例如作業、警報和操作員,還儲存歷史表,例如郵件歷史記錄、備份和恢復歷史記錄等。最後,model
除非您明確自定義數據庫,否則數據庫很少更改,但它被使用作為創建新使用者數據庫時的預設模板,如果它被損壞(正如 Tibor 提到的),對其進行備份可以幫助您避免。此外,如果您正在使用複制並且該伺服器是分發伺服器,那麼還會創建另一個系統數據庫,該數據庫
distribution
用於促進其將更改從發布伺服器分發到訂閱伺服器的工作。這也應該備份,也可以恢復。有關詳細資訊,請參閱備份和還原:系統數據庫 (SQL Server)。
作為軼事參考,我一直處於伺服器損壞的情況,我不得不啟動一個安裝了新 SQL 實例的新伺服器,然後也恢復了系統數據庫。在發生此類事件後,當您擁有所有上述實例級數據時,您會感到非常寬慰,您需要做的就是恢復系統數據庫。
那你將如何恢復你的工作?您是否在版本控制中編寫了所有腳本?如果沒有,那麼您可以恢復
msdb
以將其取回。現在關於
model
數據庫。如果您從不對其進行任何更改,那麼備份確實毫無意義。但是一些管理員意識到它的力量並根據他們的需要進行調整。對他們來說備份可能有用。除非他們在版本控制中編寫了所有腳本,並且發現針對閃亮的新數據庫執行腳本比恢復舊數據庫更容易。