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

SQL Server Agent 錯誤日誌完整管理指南:配置、查看、循環與常見問題

     編輯:關於SqlServer

SQL Server Agent 錯誤日誌記錄作業執行、警示、錯誤等關鍵資訊。妥善配置與維護日誌,是排查 Agent 異常、監控作業健康度的基礎。

日誌檔案特性

  • 預設位置: MSSQL\LOG\SQLAGENT.OUT (當前)、SQLAGENT.1~.9 (歷史歸檔,最多 9 個)。
  • 編碼: 預設 OEM (ANSI),易導致中文亂碼與管理工具讀取失敗,強烈建議改為 Unicode。
  • 最大行數: 可配置總行數與單一作業最大行數,防止日誌無限增長。

核心管理任務 T-SQL 實作

-- 1. 查看日誌內容 (需啟用 xp_cmdshell)
EXEC xp_cmdshell 'type "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLAGENT.OUT"';

-- 2. 修改日誌檔路徑 (重啟 Agent 生效)
EXEC msdb.dbo.sp_set_sqlagent_properties @errorlog_file = N'D:\SQLLogs\SQLAGENT.OUT';

-- 3. 設定錯誤訊息接收者 (net send, 需 Messenger 服務)
EXEC msdb.dbo.sp_set_sqlagent_properties @error_recipient = N'AdminUser';

-- 4. 配置記錄層級 (位元遮罩: 1=錯誤, 2=警告, 4=資訊/追蹤)
-- 僅錯誤: 1; 錯誤+警告: 3; 全部: 7
EXEC msdb.dbo.sp_set_sqlagent_properties @errorlogging_level = 7;

-- 5. 設定 Unicode 編碼 (解決中文亂碼、管理工具報錯)
EXEC msdb.dbo.sp_set_sqlagent_properties @oem_errorlog = 0;  -- 0=Unicode, 1=OEM

-- 6. 手動循環日誌 (關閉當前、開啟新檔、歸檔舊檔)
EXEC msdb.dbo.sp_cycle_agent_errorlog;

-- 7. 設定歷史記錄最大行數
EXEC msdb.dbo.sp_set_sqlagent_properties @jobhistory_max_rows = 10000;
EXEC msdb.dbo.sp_set_sqlagent_properties @jobhistory_max_rows_per_job = 500;

企業管理員 / SSMS 圖形化配置

  1. 展開 SQL Server Agent → 右鍵 錯誤日誌 → 配置。
  2. 2. 勾選「寫入執行追蹤訊息」 (除錯時啟用,生產建議關閉)。 3. 設定「錯誤日誌檔案」路徑、編碼 (Unicode)、接收者。 4. 設定「最大行數」與「每作業最大行數」。 5. 右鍵日誌 → 循環錯誤日誌 手動歸檔。

常見問題與解決

現象原因解決
日誌內容為空、不記錄OEM 編碼與系統代碼頁不符@oem_errorlog = 0 改 Unicode
SSMS 查看報 "unicode file expected"日誌為 OEM,SSMS 期望 Unicode同上,改 Unicode 並循環日誌
SQL 2000 Agent 日誌無法循環版本限制,不支援 sp_cycle_agent_errorlog手動重命名檔案、重啟 Agent
作業歷史被截斷超過 @jobhistory_max_rows_per_job調大限制或縮短作業步驟輸出
net send 不收到訊息Messenger 服務未啟動/防火牆阻擋改用 Database Mail + 警示回應

最佳實務建議

  • 預設改 Unicode: 安裝後立即執行 @oem_errorlog=0 並循環日誌。
  • 分離日誌磁碟: 將 Agent 日誌、SQL 錯誤日誌、資料庫檔案放在不同磁碟。
  • 集中化收集: 使用 Log Parser、Fluentd、Elastic Beats 將日誌轉送至 ELK/Splunk 統一分析。
  • 保留策略: 配合維護計畫定期清理超過 30 天的歸檔日誌。
  • 關鍵作業加強記錄: 在作業步驟「進階」頁勾選「記錄到資料表」或自寫審計邏輯。

SQL Server Agent 日誌雖非資料庫核心,卻是自動化營運可觀測性的關鍵。花幾分鐘配置正確編碼與循環策略,能省去無數個深夜排查的痛苦。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved