SQL Server 服務啟動數秒後自動停止:如何從 ERRORLOG、服務帳戶、master 與 tempdb 找出原因?

SQL Server 啟動後停止應先讀取 ERRORLOG 和 Windows 事件,再檢查服務帳戶、啟動參數、系統資料庫、磁盤與修補程式。

先控制風險,再實施變更建議先在測試環境或單一對象上驗證,保存設定、日誌和可復原備份。涉及生產切換、批次策略、資料庫修復或儲存重建時,應設定維護時段和明確復原條件。

1. 結論與適用範圍

服務控制器只會顯示啟動失敗,真正原因通常記錄在 SQL Server ERRORLOG。不要反復啟動或重裝覆蓋證據,應先定位日誌檔案和最後一個錯誤,再判斷是權限、路徑、系統資料庫、連接埠、資源還是修補程式問題。

該問題涉及 SQL Server、ERP、資料庫復原或版本遷移。任何高風險操作前都應保留可驗證備份。

2. 需要優先關注的風險信號

  • 服務顯示“啟動後停止”,事件 17058、17113、17204 或 945 等。
  • 近期修改服務帳戶、磁盤盤符、資料庫路徑、防毒策略或修補程式後發生。

3. 遷移或處理前的檢查清單

  1. 從 SQL Server Configuration Manager 確認實例、服務帳戶和啟動參數。
  2. 讀取當前 ERRORLOG 與應用程式事件,找到第一個致命錯誤而非最後的停止提示。
  3. 檢查 master、model、msdb、tempdb 路徑、目錄權限、磁盤空間和檔案損壞。
  4. 檢查連接埠佔用、證書、TLS、服務帳戶密碼和“作為服務登入”權限。
唯讀檢查與驗證範例
sc query MSSQLSERVER
Get-WinEvent -FilterHashtable @{LogName="Application"; ProviderName="MSSQLSERVER"} -MaxEvents 30
netstat -ano | findstr :1433

corp.example、192.0.2.0/24 與 203.0.113.0/24 均為檔案範例。只有在確認實際環境參數後,才能取代為實際值。

4. 推薦實施步驟

  1. 修復明確的路徑或權限後再啟動,每次只改變一個條件。
  2. tempdb 路徑無效時復原到可用目錄;系統資料庫損壞時按備份和重建方案處理。
  3. 服務帳戶變更必須透過 Configuration Manager,不直接在 services.msc 隨意修改。
  4. 保留 ERRORLOG、事件和操作記錄,必要時先複寫資料庫檔案再進行高風險修復。
遙距還是現場處理?日誌、設定和少量對象通常可先遙距評估;涉及物理伺服器、儲存、機房供電、批次切換或復原演練時,應安排受控現場維護時段。浙江、上海、江蘇可根據項目情況上門,其他地區可遙距協助。

5. 驗證、復原與常見誤區

  • 服務穩定運行並透過多次重新啟動。
  • 所有資料庫在線,SQL Agent、備份、應用程式連線和監聽連接埠正常。
  • 事件日誌沒有持續 I/O、權限、復原或斷言錯誤。

常見錯誤做法

  • 刪除 master 或日誌檔案。
  • 看到磁盤有空間就排除所有儲存問題。
  • 未經分析反復重裝 SQL Server。

常見問題

服務啟動後停止是否一定是資料庫損壞?

不是,帳戶、權限、路徑、連接埠、證書和修補程式都可能導致。

能否直接刪除 tempdb 檔案?

應先確認啟動參數和路徑,按受控方式處理,不能在未知狀態下隨意刪除。

上一篇網域控制站的 SYSVOL/NETLOGON 共用消失:如何檢查 DFSR 複寫與群組原則故障?下一篇SQL Server 資料庫顯示 Recovery Pending 或 Suspect:如何安全復原而不擴大資料損毀?

需要結合實際環境進一步判斷?

可提供系統版本、拓撲、完整錯誤訊息、事件日誌時間點、影響範圍、近期變更和已做過的操作。我們會先判斷風險、處理邊界和復原方式,再確認實施範圍。