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

SQL Server 服務無法啟動常見故障排查清單:密碼、電腦名、評估版到期、系統日誌四大類

     編輯:關於SqlServer

SQL Server 服務 (MSSQLSERVER / 具名實例) 無法啟動是 DBA 最頭痛的故障之一。本文歸納四大高發原因與標準化排查步驟,涵蓋服務帳戶密碼變更、電腦名稱變更、評估版到期、系統事件日誌分析,附一鍵修復腳本與預防清單。

故障一:作業系統/服務帳戶密碼變更導致登入失敗

現象:服務啟動立即停止,事件檢視器 → System 記錄 Event ID 7000 / 7038:服務無法啟動,登入失敗。

解決方案 (二選一)

  1. 改用本地系統帳戶 (Local System):
    services.msc → SQL Server (MSSQLSERVER) → 內容 → 登入 → 本地系統帳戶 → 確定 → 重啟
    優點:密碼變更無影響。缺點:權限過高、無法存取網路資源 (備份至網路共享、Linked Server 需網域帳戶)。
  2. 更新服務帳戶密碼:
    services.msc → SQL Server (MSSQLSERVER) → 內容 → 登入 → 此帳戶 → 輸入新密碼 → 確定 → 重啟
    必須同步更新:SQL Server Agent、SQL Server Browser、Full-Text Filter Daemon 等關聯服務若用同一帳戶,皆需更新密碼。

最佳實踐:使用群組受控服務帳戶 (gMSA) 或虛擬帳戶 (NT SERVICE\MSSQLSERVER) (SQL 2012+),密碼由系統自動輪換,徹底杜絕密碼過期問題。

故障二:電腦名稱變更導致內部註冊不一致

現象:重命名伺服器後,SQL Server 服務啟動失敗/掛起。

解決方案

  1. 插入 SQL Server 安裝媒體 → 執行安裝程式 → 選擇 「維護」→「修復」。
  2. 修復過程自動更新內部中繼資料 (sys.servers、登入、端點等),不損壞使用者資料庫,通常 10-20 分鐘完成。
  3. 修復後驗證:SELECT @@SERVERNAME; 應回傳新電腦名稱 (預設實例) 或 新電腦名\實例名。

故障三:安裝的是評估版且已過期 (180 天)

現象**:服務啟動失敗,錯誤日誌記錄 Evaluation period has expired。

驗證方法

  • 嘗試安裝 SQL Server SP3 / 最新 CU,評估版會報錯 This version has expired 並阻止安裝。
  • 查詢:SELECT SERVERPROPERTY('ProductVersion'), SERVERPROPERTY('Edition'), SERVERPROPERTY('LicenseType'); → LicenseType = 'EVALUATION'。

解決方案

  • 解除安裝評估版 → 安裝正式授權版 (Standard/Enterprise/Developer/Express)。
  • 若資料庫需保留:先備份/分離資料庫檔案,再重裝正式版後附加/還原。

故障四:系統事件日誌深度分析 (通用排查入口)

無論上述何種原因,**事件檢視器 → Windows Logs → System / Application** 是第一現場。

一鍵診斷腳本 (PowerShell,需管理員權限)


# 檢查 SQL Server 服務狀態與登入帳戶
Get-Service -Name MSSQL* | Select Name, Status, StartType, @{N='LogonAccount';E={$_.ServiceHandle.GetType().GetMethod('GetServiceLogonAccount').Invoke($_.ServiceHandle,@())}}

# 抓取最近 24h 相關事件
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='Service Control Manager'; StartTime=(Get-Date).AddHours(-24)} | Where {$_.Id -in 7000,7038} | Select TimeCreated, Id, Message
Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='MSSQLSERVER'; StartTime=(Get-Date).AddHours(-24)} | Select TimeCreated, Id, Message

預防性維護清單 (月度執行)

  1. [ ] 確認服務帳戶為 gMSA/虛擬帳戶,或密碼未過期且已記錄於密碼管理系統。
  2. [ ] 驗證 @@SERVERNAME 與實際電腦名一致。
  3. [ ] 檢查授權狀態:SERVERPROPERTY('LicenseType') ≠ 'EVALUATION'。
  4. [ ] 清理舊錯誤日誌 (保留 28 個循環),避免 C 槽爆滿:
    EXEC sp_cycle_errorlog; (可排程 Agent Job 每日/每週執行)。
  5. [ ] 磁碟空間預警:資料/日誌/備份磁碟剩餘 > 20%。
  6. [ ] 備份還原演練:最近 30 天內至少一次完整還原驗證。

建立標準化故障排查 SOP,將上述四大類原因、事件 ID 對照表、PowerShell 診斷腳本納入團隊知識庫,可將 SQL Server 服務啟動故障 MTTR (平均修復時間) 壓縮至 15 分鐘內。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
Event IDSource典型訊息對應原因
7000Service Control Manager服務無法啟動,登入失敗密碼錯誤/帳戶鎖定/權限不足
7038Service Control Manager服務登入失敗,更新密碼密碼已變更未同步
17058MSSQLSERVERiniterrlog: Could not open error log file日誌路徑/權限/磁碟空間
17113MSSQLSERVERError 2 (The system cannot find the file specified)master.mdf/mastlog.ldf 路徑遺失/掛載點斷開
3414MSSQLSERVERAn error occurred during recovery資料庫損壞/交易日誌不一致需修復
9002MSSQLSERVERThe log file for database is full日誌暴增/磁碟滿