DBA 與資料庫開發者必須理解 SQL Server 內建的五大系統資料庫,它們支撐整個引擎的啟動、配置、暫存、複寫、排程等核心功能。
master — 引擎的「大腦」
- 記錄所有使用者資料庫的位置、檔案、啟動參數。
- 儲存伺服器級配置(sp_configure)、連結伺服器、登入帳號、端點、憑證等。
- 包含擴展預存程序(xp_cmdshell 等),提供 OS 層級互動能力。
- 損毀即無法啟動 SQL Server,必須定期備份(建議每日完整備份 + 交易記錄備份)。
- 災難恢復參考:重建 master 需啟動單用戶模式、還原備份、重建系統物件。
model — 使用者資料庫的「模板」
- 新建資料庫(
CREATE DATABASE)時,以 model 為藍本複製。
- 可預置:通用預存程序、視圖、使用者、權限、資料庫選項(復原模式、自動收縮等)。
- 修改 model 後,僅影響後續新建資料庫,現有資料庫不受影響。
tempdb — 暫存物件的「工作間」
- 儲存:區域/全域暫存表(
#t/##t)、暫存預存程序、資料表變數、資料表值函數結果集、游標工作表、版本存放區(快照隔離、線上索引重建、MARS)。
- 每次 SQL Server 啟動時重建,基於 model 複製結構。
- 效能關鍵:建議放置於獨立高速磁碟(SSD/NVMe)、預先配置足夠大小、啟用多資料檔(每 CPU 核心 1 檔,上限 8)、啟用瞬間檔案初始化。
distribution — 複寫的「中轉站」
- 僅當伺服器設定為散發者時存在。
- 儲存:快照、交易、合併複寫的中繼資料、歷史記錄、代理程式狀態。
- 預設名稱
distribution,可自訂。
msdb — 排程與管理的「中樞」
- SQL Server Agent 作業、排程、警示、操作員。
- 備份/還原歷史(
backupset、restorehistory)。
- DTS/SSIS 套件儲存(
sysdtspackages)。
- Database Mail、Log Shipping、Policy-Based Management 相關資料。
實務建議
- 雖不建議直接查詢系統表(
sysobjects 等),但閱讀其定義與關係能深入理解引擎行為。
- 定期備份
master、msdb、model(tempdb、distribution 視複寫狀態決定)。
- 監控
tempdb 爭用(PAGELATCH、版本存放區大小),及時擴容或優化查詢。