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

SQL Server Agent 警示無法觸發的常見原因與排查清單

     編輯:關於SqlServer

SQL Server Agent 警示機制故障排查八步驟

當預設警示未如期觸發,請依序檢查以下關鍵點:

  1. 套用最新 Service Pack / CU
    修正已知 Alert 相關 Bug。確認 SELECT @@VERSION 版本為最新支援版本。
  2. SQL Server Agent 服務帳號權限
    • Local System:無網路存取權,無法寫入遠端事件日誌、發送郵件/傳呼、存取網路資源。
    • 解決:改用具備網路權限的 網域使用者帳號 (Domain User),加入本機 Administrators 群組或授予「作為服務登入」、「調整程序記憶體配額」等權限。
  3. 核心服務運行狀態
    確認 SQLServerAgent 與 EventLog 服務均為「已啟動」。若停用,警示引擎無法輪詢事件。
  4. 警示啟用狀態
    Enterprise Manager / SSMS → Management → SQL Server Agent → Alerts → 確認目標警示 Enabled = True。
  5. 警示歷史記錄
    查看警示屬性 → History 頁籤,確認上次觸發時間。若從未觸發,問題在條件判斷;若曾觸發但近期無,可能為條件值變化。
  6. 效能計數器輪詢間隔 (20 秒)
    Agent 每 20 秒讀取一次效能計數器。若閾值條件持續時間 < 20 秒 (尖峰),警示將漏判。
    對策:調整閾值持續時間、改用事件型警示 (WMI/Event Log) 而非計數器型。
  7. 錯誤日誌交叉比對
    同步檢查三份日誌的時間戳記與錯誤碼:
    • SQL Server Error Log (sp_readerrorlog)
    • SQL Server Agent Error Log (預設 LOG 目錄下 SQLAGENT.OUT)
    • Windows Application Event Log (Event Viewer)
  8. 操作員通知遞送測試
    警示觸發但操作員未收到郵件/傳呼/Net Send:
    手動在 Agent → Operators → 測試郵件設定 (Database Mail / SQL Mail)、傳呼設定、net send 指令。
    常見原因:Database Mail 未設定、SMTP 伺服器拒絡、防火牆封阻、操作員排程未含當前時段。

快速診斷腳本

-- 檢查 Agent 服務帳號
EXEC master..xp_regread 'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Services\SQLServerAgent', 'ObjectName';

-- 檢查警示啟用狀態
SELECT name, enabled, last_occurrence_date, last_occurrence_time
FROM msdb.dbo.sysalerts;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved