本文提供針對 SQL 代理服務反覆在定期間隔停止回應的問題的故障排除指引。
癥狀
SQL Server 代理服務在 SQL Server Always On 叢集上會間歇性失敗。 當服務失敗時,SQL Server 代理程式日誌會新增以下錯誤訊息:
[510] SQLAgent failed, dump generated in \<SQL_Instance_Log_Directory\>
[LOG] Exception 29539 caught at line 233 of file sql\mpu\SqlAgent\src\autostrt.cpp. SQLServerAgent initiating self-termination.
原因
若 SQL Server 代理服務未取得以下登錄檔子鍵,就會發生這些失敗:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceID>\SQLServerAgent\AutoRegistryRefresh
當登錄檔子金鑰檢索失敗時,SQL Server 代理服務會在日誌中回報異常,然後自行終止。
登錄檔子金鑰檢索可能因以下原因而失敗:
- 干擾登錄檔存取的防毒或端點防護軟體
- 遺失或錯誤設定的登錄檔鍵
- Windows 登錄檔中的暫態存取失敗
Solution
若要解決此問題,請依照下列步驟操作。
步驟 1:驗證登錄檔金鑰
- 啟動登錄編輯器(
regedit.exe)。 - 請前往以下路徑:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceID>\SQLServerAgent。 - 檢查
AutoRegistryRefresh鍵是否存在。 - 如果缺少
密鑰,請建立名為 的 DWORD(32 位元)值 ,並將其值設為。
步驟 2:將 SQL Server 排除在防毒掃描之外
這很重要
在防毒軟體或端點防護軟體中加入排除選項的流程會因出版商而異。 請向軟體發行商確認具體指示。
- 請設定防毒軟體或端點防護軟體,排除常見的 SQL Server 程序:
sqlservr.exesqlagent.exeReportingServicesService.exemsmdsrv.exefdlauncher.exefdhost.exe
- 另外,排除安裝 SQL Server 的資料夾。 例如:
C:\Program Files\Microsoft SQL Server\。
欲了解更多如何配置防毒軟體或端點防護軟體以配合 SQL Server 運作的資訊,請參見 「配置防毒軟體以配合 SQL Server」。
步驟 3:檢查事件日誌和記憶體傾印檔案
檢查日誌或最新的 SQL Agent 傾印檔案是否包含任何新錯誤:
- 檢視位於以下
<SQL_Instance_Log_Directory>\SQLAGENT.OUT\區域的 SQL Server 代理日誌。 - 請在事件檢視器中檢視應用程式與系統日誌,尋找相關錯誤。
- 分析 SQL Agent 的傾印檔案。 如果產生多個備份檔案,請專注於最近的一個。
如果沒有新的錯誤回報,就進入下一步。 如果有新的錯誤,重複之前的步驟,然後再檢查事件日誌並再次dump檔案。
步驟 4:重新啟動 SQL Server 代理服務
重新啟動 SQL Server 代理服務,讓變更能完全生效。
步驟五:監控穩定性
- 監控 SQL Server Agent 日誌,注意錯誤是否再次發生。
- 請確認日誌資料夾中沒有生成新的轉儲檔案。