SQL Server 執行個體安裝後預設建立五個系統資料庫(部分版本含 ReportServer),各司其職,掌握其功能對備份策略、災難恢復、安全管理至關重要。
| 資料庫 | 功能定位 | 關鍵內容 | 備份頻率建議 |
|---|---|---|---|
| master | 執行個體級元資料中樞 | 登入帳號、伺服器設定、連結伺服器、端點、資源調控器配置、所有使用者資料庫的檔案位置與狀態 | **每日完整備份**,異動後立即備份(如新增登入、修改設定) |
| model | 新資料庫範本 | 建立資料庫時**複製 model 內容**作為初始結構(表、檢視、程序、預設值、檔案群組設定)。可預置通用表、使用者、權限。 | **每週完整備份**,變更後備份 |
| msdb | SQL Server Agent 作業中樞 | 作業、排程、警示、操作員、備份/還原歷史、維護計畫、Database Mail、Service Broker 佇列 | **每日完整備份**,配合作業變更頻率 |
| tempdb | 暫存物件共享空間 | 暫存表、表變數、游標、版本存放區、排序/雜湊溢寫、內部工作表。**每次啟動重建**,不保留任何持久資料。 | **不可備份**,啟動自動重建。關注檔案大小、自動增長、多資料檔配置(建議 1:1 邏輯核心數,上限 8)。 |
| ReportServer (SSRS 安裝時) | 報表伺服器目錄 | 報表定義、訂閱、快照、資料來源、安全原則、執行日誌 | **每日完整備份**,含加密金鑰備份 |
| ReportServerTempDB (SSRS 安裝時) | 報表暫存工作區 | 工作階段資料、暫存報表、快照過期清理。特性類似 tempdb,啟動重建。 | 不可備份 |
sqlservr.exe -m -T3608(-T3608 僅恢復 master)。RESTORE DATABASE master FROM DISK='...' WITH REPLACE。USE model;
CREATE SCHEMA audit;
CREATE TABLE audit.log (id INT IDENTITY, event NVARCHAR(MAX), ts DATETIME DEFAULT SYSDATETIME());
CREATE USER app_user WITHOUT LOGIN;
GRANT SELECT, INSERT ON audit.log TO app_user;
-- 之後 CREATE DATABASE newdb 將自動擁有上述結構
ALTER DATABASE tempdb ADD FILE (NAME=tempdev2, FILENAME='T:\tempdb2.mdf', SIZE=1GB, FILEGROWTH=512MB); 建議檔案數 = 邏輯核心數(上限 8)。SeManageVolumePrivilege(執行個體屬性 → 進階 → 瞬間檔案初始化)。EXEC sp_delete_backuphistory @oldest_date = '2023-01-01'; EXEC sp_purge_jobhistory @job_id = ...;BACKUP MASTER KEY),否則還原後 Database Mail、加密功能失效。| 誤區 | 正確認知 |
|---|---|
| tempdb 可以備份還原 | tempdb 每次啟動重建,**備份無意義**,還原會導致版本存放區不一致。 |
| model 只能建立空資料庫 | model 可預置**任何物件**(表、程序、使用者、權限、檔案群組),新資料庫繼承全部。 |
| master 只存登入帳號 | master 還存**伺服器層級設定、端點、連結伺服器、資源調控器、所有資料庫元資料指標**。 |
| ReportServer 可手動建立表 | 嚴禁手動修改 ReportServer 結構,升級/修補會覆蓋,導致 SSRS 故障。 |
| 資料庫 | 備份類型 | 頻率 | 保留 | 特殊注意 |
|---|---|---|---|---|
| master | FULL | Daily + 異動後 | 2 週 | 單用戶模式恢復演練 |
| model | FULL | Weekly + 異動後 | 1 個月 | 範本變更即備份 |
| msdb | FULL | Daily | 2 週 | 含 Master Key 備份 |
| tempdb | — | — | — | 優化檔案配置、放置快速盤 |
| ReportServer | FULL | Daily | 1 個月 | 含加密金鑰 |
建立系統資料庫備份與恢復演練機制,是 SQL Server DBA 保障執行個體級可用性的核心職責。