SQL Server Agent 服務運行期間,若系統應用程式日誌被清除,會記錄事件 ID 312 (警告)、311 (資訊)、318 (錯誤)。本文說明事件內容、觸發條件與處理建議。
事件記錄範例
事件 ID 312 - 警告
Successfully re-opened the local eventlog - NOTE: Some events may have been missed.
事件 ID 311 - 資訊
Attempting to re-open the local eventlog...
事件 ID 318 - 錯誤
Unable to read local eventlog (reason: 事件日誌檔案已在讀取間更改。)
觸發條件
SQLSERVERAGENT 服務運行期間,系統管理員手動清除了 Windows 應用程式事件日誌。
影響分析
- SQL Server Agent 內部維護的事件日誌游標失效,需重新開啟讀取。
- 「Some events may have been missed」表示可能遺漏部分事件通知/警示。
- 不影響資料庫引擎核心功能、作業排程、備份還原等核心業務。
解決方案與建議
- 無需特殊處理:此為預期行為,服務會自動嘗試重新開啟事件日誌並恢復監控。
- 避免在 SQL Server Agent 運行時清除應用程式日誌,建議配置日誌保留政策而非手動清除。
- 若頻繁出現,檢查是否有自動化腳本/第三方工具定期清理事件日誌,調整排程避開 Agent 繁忙時段。
延伸知識
- SQL Server Agent 依賴 Windows 事件日誌記錄作業歷程、警示觸發紀錄。
- 事件日誌過大影響系統效能時,可透過「事件檢視器」設定最大容量與覆寫模式。
- SQL Server 2005+ 版本對事件日誌讀取機制有改善,此現象較少見。
遇到此類事件僅需確認業務無異常即可,屬正常操作副作用,非系統故障。