恢復 SQL Server 系統數據庫(模型、主數據庫等)的重要性是什麼?
我不得不將一些生產數據庫恢復到同一台 Microsoft SQL Server 2005 機器上的不同驅動器。效果很好,使用數據庫的應用程序重新上線。
但是,我還沒有恢復 SQL Server 自己創建的系統(或預設?)數據庫(模型、主數據庫等)。我的問題是,這些數據庫的作用是什麼?我恢復它們有多重要?
master 和 msdb store 包含定義整個系統的過程、函式、表、視圖和其他對象。例如,master 包含有關登錄資訊、數據庫文件所在位置、系統儲存過程和許多其他內容的資訊。msdb 最初主要是關於工作、警報。多年來添加了 dbmail 配置資訊和許多其他內容。
模型是一種範例數據庫,在您創建新數據庫時充當起點。模型中的對象將被複製到新數據庫中。人們過去常常更頻繁地利用這種行為(比如 10 或 15 年前),因此他們可以在他們創建的每個數據庫中包含特定的過程或表,但這存在問題並且已被廢棄。但是,有點像附錄,模型不是很糟糕,但你仍然需要它。
tempdb 是一個為臨時表(#sometablename 和 ##someothertablename)、表變數(如果它們足夠大)、排序操作和分組操作(如 GROUP BY 或 DISTINCT)以及可能其他更神秘的東西提供臨時儲存的數據庫. 通常,您永遠不會恢復 tempdb。每次重新啟動伺服器時,它都會從頭開始重建。
最新版本的 SQL Server 有另一個隱藏的系統數據庫,稱為“資源數據庫”。你永遠不應該有任何理由去修補它。
如果您想知道,“pubs”、Adventurworks 和 AdventureworksDW 不是系統數據庫,它們只是用作範例的正常使用者數據庫,可以在不影響伺服器行為的情況下刪除它們。
系統數據庫通常只有在發生某種災難性故障時才會恢復,例如磁碟崩潰或數據中心燒毀。如果您從一台伺服器遷移到另一台伺服器並且需要保留登錄名、作業、dbmail 和其他配置(儘管還有其他可能更好的方法),您也可以恢復系統數據庫。
您要備份 master、model 和 msdb。您不需要備份資源數據庫或 tempdb。如果您的工作職能之一是“dba”,那麼最好回顧一下為了恢復這些數據庫可能需要做的事情(在 MSKB 文章中進行了說明),因為恢復系統數據庫比恢復使用者數據庫更複雜. 當您實際上處於緊急情況時,您不想第一次閱讀這些知識庫文章。
還原使用者數據庫時,不需要還原系統數據庫。恢復使用者數據庫的問題是您需要確保數據庫中描述的使用者與伺服器的登錄名(儲存在主數據庫中)相匹配。這就是 sp_change_users_login 系統過程的用途。