Microsoft SQL Server/System databases

維基教科書,自由的教學讀本

SQL Server每個服務器實例都安裝了4個系統數據庫: master, tempdb, model, msdb. 提供了服務器端配置元數據,工具配置和處理數據,創建和利用臨時對象的能力。

master[1][編輯]

master數據庫記錄SQL Server實例的服務器範圍配置信息,包括所有登錄名和數據庫引擎配置默認值。master數據庫存儲元數據,包括對實例上所有其他數據庫的引用。此數據庫記錄 SQL Server 的初始化信息,如果master數據庫丟失、損壞或不可用,SQL Server實例將無法啟動。 在 SQL Server 2005 之前,所有系統對象都存儲在master數據庫中。 從 SQL Server 2005 開始,主數據庫通過引用只讀的「資源數據庫」的視圖、函數和存儲過程提供對系統對象的訪問。

tempdb[2][編輯]

tempdb數據庫被視為所有連接和所有用戶都可以訪問的「全局資源」。tempdb數據庫保存用戶創建的臨時數據庫對象,例如臨時表和臨時存儲過程。數據庫引擎也大量使用該數據庫來序列化中間結果並保存在處理期間生成的其他臨時數據和對象。Tempdb在SQL Server服務首次啟動時重新創建。由於系統大量使用tempdb,因此許多系統範圍的性能優化必然集中在使tempdb儘可能高效上。

model[3][編輯]

模型數據庫是在服務器實例上所有新創建的數據庫的模板。創建數據庫時,它被初始化為模型數據庫的副本,然後修改為創建時指定的正確大小和設置。模型數據庫中的任何對象都會自動複製到新數據庫中。出於這個原因,一些數據庫管理員(DBA)在模型數據庫中創建他們希望在所有新創建的數據庫中存在的函數或其他數據庫對象。

在SQL Server 2005之前,數據庫初始化過程需要在創建數據庫時分配和清除(「零填充」)所有頁面。從SQL Server 2005開始,使用「即時初始化功能」通過在分配新數據頁時跳過零填充來提高性能。

每次啟動SQL Server時,都會從模型數據庫的副本重新創建tempdb數據庫,因此模型數據庫必須始終存在於SQL Server系統上。

msdb[4][編輯]

msdb 數據庫是一個系統數據庫,用於存儲SQL Server特性和應用程序的配置和處理數據以及元數據,包括SQL Server代理(作業計劃和警報)、SQL Server 集成服務(ETL 包)、數據庫郵件和服務代理。

用途[編輯]

獲取所有數據庫及其好用的存儲尺寸:

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_spaceused'

參考文獻[編輯]

  1. master database (Microsoft Docs)
  2. tempdb database (Microsoft Docs)
  3. model database (Microsoft Docs)
  4. msdb database (Microsoft Docs)