SQL Agent 服務間歇性失敗

本文提供針對 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:驗證登錄檔金鑰

  1. 啟動登錄編輯器(regedit.exe)。
  2. 請前往以下路徑: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceID>\SQLServerAgent
  3. 檢查 AutoRegistryRefresh 鍵是否存在。
  4. 如果缺少密鑰,請建立名為DWORD(32 位元)值,並將其值設為

步驟 2:將 SQL Server 排除在防毒掃描之外

這很重要

在防毒軟體或端點防護軟體中加入排除選項的流程會因出版商而異。 請向軟體發行商確認具體指示。

  1. 請設定防毒軟體或端點防護軟體,排除常見的 SQL Server 程序:
    • sqlservr.exe
    • sqlagent.exe
    • ReportingServicesService.exe
    • msmdsrv.exe
    • fdlauncher.exe
    • fdhost.exe
  2. 另外,排除安裝 SQL Server 的資料夾。 例如: C:\Program Files\Microsoft SQL Server\

欲了解更多如何配置防毒軟體或端點防護軟體以配合 SQL Server 運作的資訊,請參見 「配置防毒軟體以配合 SQL Server」。

步驟 3:檢查事件日誌和記憶體傾印檔案

檢查日誌或最新的 SQL Agent 傾印檔案是否包含任何新錯誤:

  1. 檢視位於以下 <SQL_Instance_Log_Directory>\SQLAGENT.OUT\區域的 SQL Server 代理日誌。
  2. 請在事件檢視器中檢視應用程式與系統日誌,尋找相關錯誤。
  3. 分析 SQL Agent 的傾印檔案。 如果產生多個備份檔案,請專注於最近的一個。

如果沒有新的錯誤回報,就進入下一步。 如果有新的錯誤,重複之前的步驟,然後再檢查事件日誌並再次dump檔案。

步驟 4:重新啟動 SQL Server 代理服務

重新啟動 SQL Server 代理服務,讓變更能完全生效。

步驟五:監控穩定性

  1. 監控 SQL Server Agent 日誌,注意錯誤是否再次發生。
  2. 請確認日誌資料夾中沒有生成新的轉儲檔案。