master 儲存所有系統層級中繼資料:登入帳號、連結伺服器、端點、配置選項、所有資料庫的存在與檔案位置、啟動參數。master 損壞或遺失將導致整個 SQL Server 執行個體無法啟動。
系統資料庫備份策略:master、model、msdb 必須納入完整備份排程;tempdb 每次啟動重建,無需備份。
master → 工作 → 備份。BACKUP DATABASE master
TO DISK = 'D:\SQLBackup\master_FULL_20240115.bak'
WITH INIT, COMPRESSION, CHECKSUM, STATS = 5;
GO
sqlservr.exe -m "SQLCMD"(僅允許 sqlcmd 連線)-m。sqlcmd 或 SSMS(單一連線)執行:RESTORE DATABASE master
FROM DISK = 'D:\SQLBackup\master_FULL_20240115.bak'
WITH REPLACE, RECOVERY;
GO
-m),驗證登入、連結伺服器、配置是否恢復。適用情況:master.mdf 遺失/損壞、無法進入單一使用者模式。
Setup.exe /qn /ACTION=REBUILDDATABASE
/INSTANCENAME=MSSQLSERVER
/SQLSYSADMINACCOUNTS="BUILTIN\Administrators"
/SAPWD="Str0ngP@ssw0rd"
/SQLCOLLATION=Chinese_Taiwan_Stroke_CI_AS
參數說明:
/qn:無訊息安裝(錯誤寫入 Log,%ProgramFiles%\Microsoft SQL Server\100\Setup Bootstrap\Log)。/INSTANCENAME:預設實例用 MSSQLSERVER,具名實例用實例名。/SQLCOLLATION:必須與原 Master 相同,否則還原後排序規則衝突導致系統表損壞。sqlservr.exe -m "SQLCMD"
-- 另開視窗
sqlcmd -S . -E -Q "RESTORE DATABASE master FROM DISK='D:\SQLBackup\master_FULL_20240115.bak' WITH REPLACE, RECOVERY;"
master.mdf / mastlog.ldf。Setup.exe /ACTION=REBUILDDATABASE 命令。DATA 目錄下重新產生 master.mdf。sys.databases、sys.server_principals、連結伺服器是否正常。| 風險點 | 對策 |
|---|---|
| 排序規則不一致 | 重建時明確指定 /SQLCOLLATION,與原環境完全一致 |
| 備份檔版本不符 | 僅能還原至相同版本(SP 級別建議一致);跨版本需升級腳本 |
| 單一使用者模式被佔用 | 用 -m "SQLCMD" 限制僅允許 sqlcmd;或停用 Agent 服務 |
| msdb/model 同步遺漏 | Master 還原後,若 msdb/model 也有變更,需同步還原它們 |
DECLARE @path NVARCHAR(256) = 'D:\SQLBackup\master_FULL_' + CONVERT(CHAR(8), GETDATE(), 112) + '.bak';
BACKUP DATABASE master TO DISK = @path
WITH INIT, COMPRESSION, CHECKSUM, STATS = 10;
-- 保留 7 天
EXECUTE master.dbo.xp_delete_file 0, N'D:\SQLBackup', N'bak', DATEADD(DAY, -7, GETDATE());