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

SQL Server 警報疑難排查完整手冊:從服務配置到性能計數器

     編輯:關於SqlServer

SQL Server Agent 警報是自動化運維的核心組件,但配置不當、服務異常、計數器採樣間隔等問題常導致警報失效。本文提供系統化排查清單,覆蓋補丁、服務賬號、啟用狀態、計數器頻率、日志分析、通知測試六大維度。

排查清單(按優先級)

1. 確保安裝最新 Service Pack / 累積更新

  • 歷史版本存在警報引擎 Bug(如重複觸發、不觸發、郵件發送失敗)。
  • 執行 SELECT @@VERSION 對照微軟發布公告,應用最新 CU。

2. SQL Server Agent 服務賬號必須為域用戶

  • LocalSystem 無網絡訪問權限,導致:
  • ❌ 無法將事件寫入遠程 Windows 應用程序日志
  • ❌ 作業步驟無法訪問網絡共享(備份腳本、SSIS 包等)
  • ❌ Database Mail / 操作員郵件/寻呼通知發送失敗
  • ✅ 解決:服務屬性 → 登錄 → 此賬號 → 輸入域賬號 (domain\sqlagent) + 密碼 → 重啟服務

3. 核心服務運行狀態檢查

  • 服務管理器確認 SQL Server Agent 與 EventLog 服務均為「正在運行」。
  • 若 EventLog 服務停止,警報無法讀取錯誤日志觸發條件。

4. 警報啟用狀態與歷史記錄核對

SSMS 路徑:管理 → SQL Server Agent → 警報 → 右鍵屬性 → 通用 → 啟用。

  • 檢查「歷史記錄」頁籤:最後觸發時間、觸發次數、最後響應結果。
  • 若從未觸發,轉向第 5 條。

5. 性能計數器採樣間隔陷阱(關鍵)

SQL Server Agent 每 20 秒採樣一次 性能計數器(如 SQLServer:Locks - Deadlocks/sec)。

  • 若事件持續時間 < 20 秒(如瞬間死鎖峰值),極大概率被採樣遺漏,警報不觸發。
  • 對策:
  • 改用 WMI 事件警報(如 DEADLOCK_GRAPH 事件),即時響應,無採樣延遲。
  • 或降低業務邏輯中的死鎖發生率(索引優化、事務縮短、鎖順序一致)。

6. 多源日志交叉分析

對照警報失效時間點,檢查三處日志是否有對應錯誤碼、堆棧、網絡超時等線索。

7. 通知測試(隔離通道故障)

若警報已觸發但操作員未收到通知:

  1. 手動發送測試郵件:EXEC msdb.dbo.sp_send_dbmail @recipients='ops@corp.com', @subject='Test', @body='Test'
  2. 測試 net send / msg 命令(需啟用 Messenger 服務)。
  3. 檢查 Database Mail 設置:賬號、SMTP、防火牆、反垃圾郵件策略。
  4. 檢查操作員郵件/寻呼地址是否正確、是否啟用「電子郵件/寻呼」通知。

進階優化建議

  • 警報分級:嚴重級別 19-25 設置警報,避免低級別噪音淹沒關鍵事件。
  • 作業響應:警報關聯作業自動執行修復腳本(如重啟服務、清理 tempdb、殺死阻塞進程)。
  • 監控覆蓋:補充 sys.dm_os_performance_counters 定時採集、Extended Events 會話、第三方監控 (Zabbix/Prometheus/Datadog) 實現全維度可觀測。

系統化排查 + 計數器採樣認知 + 多源日志交叉驗證,是解決 SQL Server 警報疑難的金鑰。建議將上述清單製成運維 Runbook,納入例行巡檢與新環境驗收標準。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
日志源位置關鍵信息
SQL Server 錯誤日志SSMS → 管理 → SQL Server 日志 / sp_readerrorlog嚴重級別 ≥ 19 的錯誤、死鎖、啟動/關閉記錄
SQL Server Agent 錯誤日志%ProgramFiles%\Microsoft SQL Server\MSSQL.x\MSSQL\LOG\SQLAGENT.OUT作業步驟失敗、警報引擎錯誤、郵件發送異常
Windows 應用程序日志事件查看器 → Windows 日志 → 應用程序服務啟動失敗、登錄失敗、VSS 備份錯誤