問題背景
開機跑修復碼後進入系統,SQL Server 服務自動關閉且啟動失敗。Windows 日誌提示:master 資料庫日誌掃描號無效,可能資料損壞或 .ldf/.mdf 不匹配。
排查過程與嘗試
- 檔案壓縮屬性:嘗試勾選/取消「壓縮內容以節省磁碟空間」,無效
- 系統檔案替換:從正常環境複製
master.mdf、mastlog.ldf、model.mdf、modellog.ldf 替換,出現新錯誤
- 錯誤 1814:
tempdb 磁碟空間不足(實際剩餘數十 GB),刪除 tempdb 檔案無效
- 啟動參數嘗試:
net start MSSQLSERVER /f /m /T3608 可啟動但代理失敗
- 組態管理器發現:SQL Server 服務啟動帳號異常,移除衝突的「Microsoft SQL Server 2012 Express LocalDB」後服務可啟動,但登入仍失敗
- 錯誤 18456:Windows 驗證與 sa 登入均失敗
- 單用戶模式修改密碼:嘗試
sqlservr -m + sqlcmd 修改 sa 密碼,報「已有實例在存取」
- 終極解法:在另一台正常機器上啟用 sa、修改密碼,複製四個系統資料庫檔案覆蓋(注意路徑多出
1 子目錄問題),重啟服務,用 sa 登入成功
- 善後:發現 Windows 登入帳號為舊電腦帳號,新增正確管理員登入並授權,刪除舊帳號
關鍵教訓
- 系統資料庫檔案路徑必須完全一致(注意子目錄名稱)
- sa 帳號預設停用,需先在可用環境啟用並設定密碼
- 服務啟動帳號必須與當前作業系統管理員帳號匹配
- 遇到問題保持冷靜,循序漸進排查,避免盲目重裝