首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server Master 資料庫損壞三大修復方案:還原備份、複製模板、重建系統庫

     編輯:關於SqlServer

故障現象

SQL Server 服務啟動失敗,錯誤日誌顯示:

Error: 9003, Severity: 20, State: 1.
The log scan number ... passed to log scan in database 'master' is not valid.
Cannot recover the master database. SQL Server is unable to run.
Restore master from a full backup, repair it, or rebuild it.

方案一:從完整備份還原 Master (最佳、資料零遺失)

  1. 啟動 SQL Server 單用戶模式:
    sqlservr.exe -m -s MSSQLSERVER (具體實例名)。
  2. 使用 sqlcmd 連接:
    sqlcmd -S . -E
  3. 還原 Master:
    RESTORE DATABASE master FROM DISK = 'D:\Backup\master_full.bak' WITH REPLACE;
  4. 重啟服務正常模式。

前提:必須有 Master 完整備份。生產環境務必將 Master、MSDB、Model 納入維護計畫每日完整備份。

方案二:複製安裝模板檔案 (無備份時的次佳選)

  1. 尋找安裝媒體或安裝目錄下的 Template 資料夾:
    C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Binn\Templates\ (版本路徑依實際調整)
  2. 複製 master.mdf、mastlog.ldf 至對應資料/記錄目錄 (覆蓋損壞檔案)。
  3. 啟動服務。

後果:Master 退回到安裝初始狀態,**所有登入、連結伺服器、系統配置、使用者資料庫掛載資訊遺失**,需手動重建或從腳本部署。

方案三:重建系統資料庫 (無備份、無模板、或版本不符)

  1. 掛載/複製 SQL Server 安裝媒體 (ISO/解壓目錄)。
  2. 命令列進入 Setup.exe 目錄,執行:
Setup.exe /QUIET /ACTION=REBUILDDATABASE 
  /INSTANCENAME=MSSQLSERVER 
  /SQLSYSADMINACCOUNTS="BUILTIN\Administrators" 
  /SAPWD="StrongP@ssw0rd" 
  /SQLCOLLATION=Chinese_PRC_CI_AS

參數說明:

  • /INSTANCENAME:具體實例名 (預設 MSSQLSERVER)。
  • /SQLSYSADMINACCOUNTS:系統管理員帳號 (可多個,逗號分隔)。
  • /SAPWD:SA 密碼 (混合模式必填)。
  • /SQLCOLLATION:實例定序 (與原損壞實例一致,否則使用者資料庫掛載可能定序衝突)。
  1. 完成後重啟服務。
  2. 必須重新應用所有 Service Pack / CU 补丁,版本號才會一致。

修復後必做驗證

  1. SELECT @@VERSION; 確認版本號與補丁一致。
  2. SELECT name FROM sys.databases; 確認使用者資料庫列表 (可能需 ALTER DATABASE ... SET ONLINE 或重新附加)。
  3. SELECT * FROM sys.server_principals WHERE type IN ('S','U','G'); 確認登入帳號。
  4. EXEC sp_helplinkedsrvlogin; 確認連結伺服器。
  5. 執行 DBCC CHECKDB(master) 確認無邏輯損壞。

預防清單

  • Master、MSDB、Model 納入**每日完整備份**,異地儲存。
  • 啟用 BACKUP CHECKSUM、COMPRESSION。
  • 定期演練 Master 還原流程 (測試環境),確保腳本可用、RTO 可控。
  • 監控錯誤日誌 823/824/9003 等 I/O 錯誤,早期發現磁碟惡化。

結語

Master 損壞是 SQL Server 最嚴重故障之一。**有備份 → 還原 (RTO 最短、資料完整);無備份有模板 → 複製模板 (需重建所有伺服器級物件);全無 → 重建系統庫 (最慢、需重打補丁)**。將 Master 備份納入核心 SLA,定期演練,是 DBA 底線職責。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved