SQL Server 服務啟動類型設為「自動」,但開機後服務未運行。前幾天正常,近期突然失效。
services.msc → SQL Server (MSSQLSERVER) → 右鍵內容 → 常規 → 啟動類型:自動 (或自動(延遲啟動))
eventvwr.msc → Windows 記錄 → System → 來源: MSSQLSERVER
關鍵字: "The service did not start due to a logon failure", "Login failed for user", "Insufficient memory"
服務內容 → 登入 → 本機系統帳戶 / 指定域帳號
若用域帳號:密碼過期、帳號鎖定、權限不足 (需「作為服務登入」權限)
SQL Server 相依: SQL Server Agent, SQL Full-text Filter Daemon, SQL Browser
確認相依服務皆為「自動」且能正常啟動
路徑: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log\ERRORLOG
搜尋: "Error", "Failed", "Cannot"
常見: 資料庫檔案損壞、端口被佔用 (1433)、憑證過期、磁碟空間不足
| 原因 | 解決步驟 |
|---|---|
| 服務帳號密碼過期 | 服務內容→登入→重新輸入密碼→應用→重啟服務 |
| 「作為服務登入」權限遺失 | gpedit.msc → 電腦設定→Windows 設定→安全性設定→本機原則→用戶權利指派 → 加入服務帳號 |
| 端口 1433 被佔用 | netstat -ano | findstr :1433 → taskkill /PID xxx /F 或修改 SQL Server 通訊埠 |
| master/model 資料庫損壞 | 單用戶模式啟動 (sqlservr.exe -m) → RESTORE DATABASE master FROM DISK=... |
| 延遲啟動導致體感「未啟動」 | 改為「自動」而非「自動(延遲啟動)」,或接受延遲 1-2 分鐘 |
$svc = Get-Service MSSQLSERVER
$svc.StartType = 'Automatic'
$svc | Select Name, Status, StartType, ServiceName
# 檢查相依
$svc.ServicesDependedOn | Select Name, Status
# 檢查事件
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='MSSQLSERVER'; Level=2} -MaxEvents 20
SQL Server 開機不自啟,90% 是 服務帳號認證問題 (密碼過期/權限遺失) 或 相依服務/資源未就緒。按「事件檢視器 → 錯誤日誌 → 服務屬性」三步走,通常 10 分鐘內可定位根因。