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

SQL Server 無法啟動排查指南:註冊表權限與 Named Pipes 衝突雙重檢查

     編輯:關於SqlServer

核心成因:服務帳號註冊表權限不足

SQL Server 啟動失敗主因在於 LocalSystem 帳號與 Administrators 群組對關鍵註冊表項缺乏完全控制權限,導致 SQLExecutive 服務無法正確登入。

排查步驟:使用 Regedt32.exe 檢查權限

  1. 執行 regedt32.exe(非 regedit,支援權限編輯)
  2. 選擇視窗 → HKEY_LOCAL_MACHINE,最大化視窗
  3. 定位並檢查以下三個路徑的權限:

關鍵註冊表路徑


1. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQLExecutive
2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLExecutive
3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer\SQLExecutive

權限設定標準

  • LocalSystem:完全控制
  • Administrators:完全控制
  • 勾選「取代子物件的權限項目」遞歸套用

次要成因:Named Pipes 註冊表衝突

註冊表中 ServerHost 值包含伺服器名稱,與 Named Pipes 協定衝突導致啟動失效。

修正步驟

  1. 定位:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\SQLExecutive
  2. 找到 ServerHost 字串值
  3. 編輯值:移除伺服器名稱,僅保留 Named Pipes 管道名稱

任務失敗層級與對應策略

層級現象常見原因
部分任務失敗個別作業錯誤權限、鎖定、語法錯誤
全部任務失敗服務完全無法啟動註冊表權限、Named Pipes 衝突、啟動參數錯誤

快速診斷清單

  1. 檢查 SQL Server 錯誤日誌(ERRORLOG)具體錯誤代碼
  2. 確認 MSSQLSERVER 服務啟動帳號密碼正確、未鎖定
  3. 檢查連接埠 1433 是否被佔用(netstat -an | findstr 1433)
  4. 驗證註冊表權限(本文核心步驟)
  5. 檢查 Named Pipes 協定是否啟用(SQL Server 組態管理器)
  6. 嘗試以命令列啟動:sqlservr.exe -c -f(最小配置模式)

預防措施

  • 安裝時選擇網域服務帳號而非 LocalSystem,權限可控
  • 定期備份 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer 分支
  • 變更網路協定設定後重啟服務驗證
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved