跳轉到內容

Microsoft SQL Server/系統資料庫

來自華夏公益教科書,自由的教學叢書

本章將介紹每個 Microsoft SQL Server 例項安裝時所帶的系統資料庫的作用。

當您安裝 Microsoft SQL Server 時,五個系統資料庫會自動建立在每個 SQL Server 例項上。這些系統資料庫允許資料庫引擎和管理應用程式正確地管理系統。

  • Resource (僅限 SQL Server 2005 及更高版本)
  • master
  • model
  • msdb
  • tempdb

Resource 資料庫是一個只讀資料庫,包含所有 SQL Server 系統物件。此係統資料庫不會顯示在 SQL Server Management Studio 物件資源管理器中,因此使用者可能不知道它。與 Resource 資料庫的互動是間接的,透過引用這些物件的 master 資料庫系統檢視和函式進行。由於 Resource 資料庫是隻讀的,因此只有在 SQL Server 例項上安裝 SQL Server 修補程式、Service Pack 或升級時,系統才會對其進行修改。Resource 資料庫僅與 SQL Server 2005 及更高版本一起安裝。

master 資料庫記錄 SQL Server 例項的伺服器範圍配置資訊,包括所有登入和資料庫引擎配置預設值。master 資料庫儲存元資料,包括對例項上所有其他資料庫的引用。該資料庫記錄 SQL Server 的初始化資訊,如果 master 資料庫丟失、損壞或無法訪問,則 SQL Server 例項無法啟動。在 SQL Server 2005 之前,所有系統物件都儲存在 master 資料庫中。從 SQL Server 2005 開始,master 資料庫透過引用只讀 Resource 資料庫的檢視、函式和儲存過程提供對系統物件的訪問。

tempdb 資料庫被認為是所有連線和所有使用者都可以訪問的全域性資源。tempdb 資料庫儲存使用者建立的臨時資料庫物件,例如臨時表和臨時儲存過程。該資料庫也被資料庫引擎大量使用,用於序列化中間結果,並儲存處理期間生成的其它臨時資料和物件。tempdb 會在 SQL Server 服務首次啟動時被重新建立。由於 tempdb 被系統大量使用,因此許多系統範圍的效能最佳化必須集中在使 tempdb 儘可能高效。

model 資料庫是例項上所有新建立資料庫的模板。當建立一個數據庫時,它被初始化為 model 資料庫的副本,然後根據建立時的指定大小和設定進行修改。model 資料庫中的任何物件都會自動複製到新資料庫中。為此,一些資料庫管理員 (DBA) 在 model 資料庫中建立他們希望存在於所有新建立資料庫中的函式或其它資料庫物件。

在 SQL Server 2005 之前,資料庫初始化過程需要在建立資料庫時分配並清除所有頁面(“零填充”)。從 SQL Server 2005 開始,使用“即時初始化功能”透過在分配新資料頁面時跳過零填充來提高效能。

tempdb 資料庫在每次啟動 SQL Server 時都會從 model 資料庫的副本中重新建立,因此 model 資料庫必須始終存在於 SQL Server 系統上。

msdb 資料庫是一個系統資料庫,用於儲存 SQL Server 功能和應用程式的配置和處理資料以及元資料,包括 SQL Server 代理(作業計劃和警報)、SQL Server Integration Services (ETL 包)、資料庫郵件和 Service Broker。

以下是一項獲取所有伺服器資料庫大小的請求

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

SQL Server 會在每個伺服器例項中安裝五個系統資料庫:Resource(僅限 SQL Server 2005 及更高版本)、mastertempdbmodelmsdb。每個資料庫都為 SQL Server 例項提供一組特定的系統範圍功能,包括訪問伺服器範圍的配置元資料、實用程式配置和處理資料,以及建立和利用臨時物件的能力。

參考資料

[編輯 | 編輯原始碼]
  1. Resource 資料庫 (Microsoft 文件)
  2. master 資料庫 (Microsoft 文件)
  3. tempdb 資料庫 (Microsoft 文件)
  4. model 資料庫 (Microsoft 文件)
  5. msdb 資料庫 (Microsoft 文件)
華夏公益教科書