首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL Server 警報故障排查標準流程:從 Service Pack 到運算子通知鏈路

     編輯:MySQL 資料庫相關知識

SQL Server Agent 警報不觸發、運算子不收到通知是常見運維痛點。本文提供 7 步標準排查流程,覆蓋補丁、服務賬號、服務狀態、啟用狀態、性能計數器、錯誤日志、通知通道。

7 步標準排查清單

  1. 確認 Service Pack 版本:安裝最新 SP 修復已知警報 Bug (SELECT @@VERSION / SERVERPROPERTY('ProductLevel'))
  2. 檢查 SQL Server Agent 服務賬號:必須為域用戶 (非 LocalSystem),才能訪問網絡資源、寫入遠程事件日志、發送郵件/傳呼 (services.msc → 登錄頁籤)
  3. 驗證核心服務運行狀態:SQLServerAgent + EventLog 服務均需 Running 狀態
  4. 確認警報啟用狀態:Enterprise Manager → 管理 → SQL Server Agent → 警報 → 雙擊目標警報 → 勾選「啟用」
  5. 檢查警報歷史記錄:同界面查看「歷史記錄」頁籤,確認上次觸發時間、是否有報錯
  6. 核對性能計數器採樣間隔:Agent 每 20 秒 採樣一次性能計數器。若警報條件持續時間 < 20 秒,可能漏採樣導致不觸發
  7. 三大日志聯動分析:
    • SQL Server 錯誤日志 (ERRORLOG)
    • SQL Server Agent 錯誤日志 (SQLAGENT.OUT)
    • Windows 應用程序事件日志
    對比警報失效時間點前後的錯誤記錄,定位根因

運算子通知不送達專項排查

  1. 手動測試通知通道:
    • EXEC msdb.dbo.sp_notify_operator @name='DBA', @subject='Test', @body='Test'
    • 或 SQL Agent → 運算子 → 右鍵 → 發送測試郵件/傳呼/網絡發送
  2. 檢查運算子配置:郵件地址/傳呼號碼/Net Send 名稱是否正確、啟用狀態
  3. 檢查 Database Mail / SQLMail 配置:EXEC msdb.dbo.sysmail_help_status_sp、郵件隊列 sysmail_mailitems
  4. 網絡防火牆/反垃圾郵件網關是否攔截

現代化替代:Always On 可用性組監控 + Azure Monitor / Prometheus

  • 傳統警報基於性能計數器/錯誤號,延遲高、誤報多
  • 推薦遷移至:Extended Events 捕獲精確事件 + Prometheus + Alertmanager 多維指標告警 + Grafana 可視化
  • 關鍵指標:sqlserver_database_replica_state、sqlserver_log_send_queue_size、sqlserver_redo_queue_size、sqlserver_failed_login_attempts
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved