SQL Server 服務啟動失敗,Windows 事件檢視器(系統日誌)記錄:
無法復原 master 資料庫。正在結束。錯誤: 9003,嚴重度: 20,狀態: 1。錯誤 9003 表示 資料庫記錄檔 (LDF) 損毀或版本不匹配,導致 master 資料庫無法完成復原(Redo/Undo 階段)。常見原因:非正常關機、磁碟壞軌、記錄檔被刪除/移動、版本不相容附掛、防毒軟體鎖定檔案。
適用於 SQL Server 2000/2005/2008/2008 R2。SQL Server 2012+ 請使用安裝媒體 Setup.exe /ACTION=REBUILDDATABASE。
MSSQL\Data 目錄更名為 Data_Bak(保留 master.mdf、mastlog.ldf、model.mdf、modellog.ldf、msdbdata.mdf、msdblog.ldf)。Data 目錄下的 master.mdf、mastlog.ldf、model.mdf、modellog.ldf 至任意暫存資料夾(如 C:\Temp\SystemDBs)。\\Setup\Data\ 取得(SQL 2005/2008)。C:\Program Files\Microsoft SQL Server\80\Tools\Binn\rebuildm.exe → 瀏覽指向暫存資料夾 → 重建。Setup.exe /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=MSSQLSERVER
/SQLSYSADMINACCOUNTS="BUILTIN\Administrators"
/SAPWD="StrongP@ssw0rd"
/SQLCOLLATION=Chinese_Taiwan_Stroke_CI_AS
/DATADIR="C:\Temp\SystemDBs"
/LOGDIR="C:\Temp\SystemDBs"
Data_Bak 中的使用者資料庫(.mdf/.ldf)複製回 Data 目錄,並在 SSMS 中 附加。ALTER DATABASE [YourDB] SET EMERGENCY;
ALTER DATABASE [YourDB] SET SINGLE_USER;
DBCC CHECKDB ([YourDB], REPAIR_ALLOW_DATA_LOSS); -- 最後手段
ALTER DATABASE [YourDB] SET MULTI_USER;
SELECT @@VERSION 比對 Build Number(如 9.00.4035.00),否則重建後版本不匹配仍無法啟動。/SQLCOLLATION 參數,錯誤排序規則會導致使用者資料庫附加失敗。僅在無法重建、無備份、必須嘗試搶救資料時使用。
sqlservr.exe -c -f -T3608 -s MSSQLSERVER-f 最小配置、-T3608 僅復原 master)。sqlcmd 連線:sqlcmd -S . -E -d masterALTER DATABASE master SET EMERGENCY;
ALTER DATABASE master SET SINGLE_USER;
DBCC CHECKDB (master, REPAIR_REBUILD); -- 僅修復元資料,不丟失資料
-- 若失敗,最後手段(資料遺失風險):
-- DBCC CHECKDB (master, REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE master SET MULTI_USER;
C:\Program Files\Microsoft SQL Server\C:\Program Files (x86)\Microsoft SQL Server\C:\Program Files\Microsoft SQL Server\MSSQL.x\(資料目錄若有重要資料請先備份)HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\、HKLM\SYSTEM\CurrentControlSet\Services\MSSQL*。| 措施 | 說明 |
|---|---|
| 系統資料庫備份 | 每日備份 master、model、msdb(完整備份 + 交易記錄備份)。master 變更頻率低,每日一次足夠。 |
| 啟用資料庫校驗和 | ALTER DATABASE master SET PAGE_VERIFY CHECKSUM; 早期偵測頁面損毀。 |
| DBCC CHECKDB 定期執行 | 每週對 master、msdb 執行 DBCC CHECKDB WITH NO_INFOMSGS,納入 Agent 作業並設定失敗通知。 |
| 硬體監控 | RAID 控制器事件、SMART 資訊、事件檢視器磁碟錯誤(Event ID 7, 9, 11, 51)即時告警。 |
| 防毒軟體排除 | 排除 *.mdf、*.ldf、*.ndf、MSSQL\Data\、MSSQL\Log\、MSSQL\Backup\ 目錄,防止即時掃描鎖定檔案導致損毀。 |
| UPS 與正常關機流程 | 避免斷電導致記錄檔未寫入完畢。 |
ALTER DATABASE ... SET OFFLINE 後再移動檔案,或使用 DBCC REBUILD_LOG(僅限舊版本、極高風險)。MSSQL\Log\ERRORLOG(或 ERRORLOG.1),搜尋 "master"、"9003"、"recovery"。sqlservr -c -m -s MSSQLSERVER,若能啟動則為使用者資料庫問題,可逐一離線排查。掌握上述流程與預防措施,可在遭遇 master 資料庫損毀、錯誤 9003 導致 SQL Server 無法啟動時,有條不紊地完成修復並將損失降至最低。