一 概述
默認情況下,SQL Server 代理創建錯誤日志來記錄警告和錯誤。日志中顯示下列警告和錯誤:
警告消息,提供有關潛在問題的信息,例如“作業 在執行時被刪除”。
錯誤消息,通常需要系統管理員干預,例如“無法啟動郵件會話”。可以通過 net send 將錯誤消息發送給特定用戶或計算機。
默認情況下,執行跟蹤消息不寫入 SQL Server代理日志錯誤,因為它們會將日志填滿。如果錯誤日志已滿,會降低選擇和分析更嚴重的錯誤的能力。因為日志會增加服務器的處理負荷,所以請務必仔細考慮是否值得將執行跟蹤消息捕獲到錯誤日志中。通常,最好僅在調試某個特定問題時捕獲所有消息。
二 錯誤日志的存放目錄和個數
SQL Server 最多可以維護 1個當前錯誤日志記錄 和 9個 SQL Server 代理錯誤日志歷史記錄。每個存檔日志都有一個擴展名,指示該日志的相對存在時間。例如,擴展名 .1 表示最新的存檔錯誤日志,而擴展名 .9 表示最舊的存檔錯誤日志。
SQL Server 代理停止後,可以修改 SQL Server 代理錯誤日志的位置。如果錯誤日志為空,則無法打開日志。可以隨時循環訪問 SQL Server 代理日志,無需停止 SQL Server 代理。
三 基本管理任務
查看 SQL Server 代理錯誤日志 :企業管理器;通過openrowset讀取文件;xp_cmdshell下執行dos輸出的type命令等;xp_cmdshell下bcp進入數據庫系統的表中;exec xp_cmdshell 'type "C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLLOGSQLAGENT.out"'
重命名 SQL Server 代理錯誤日志 ,重啟sql代理後生效 :企業管理器;EXEC msdb.dbo.sp_set_sqlagent_properties @errorlog_file=N'C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLLOGSQLAGENT.OUT'
發送 SQL Server 代理錯誤消息 ,使用net send 發送消息,依賴於windows的messenges 服務 :企業管理器;EXEC msdb.dbo.sp_set_sqlagent_properties @error_recipient=N'jinsen'
將執行跟蹤消息寫入到 SQL Server 代理錯誤日志中 :配置sql代理,記錄跟蹤內容;
配置代理錯誤日志的信息內容類型(錯誤 1、警告 2、信息(包含錯誤跟蹤) 4),類型可以疊加:企業管理器;EXEC msdb.dbo.sp_set_sqlagent_properties @errorlogging_level={1|2|4|3|5|7|6}
配置代理錯誤日志的信息內容的編碼類型 :企業管理器;EXEC msdb.dbo.sp_set_sqlagent_properties @oem_errorlog={0|1}
回收錯誤日志的空間 :使用企業管理器;EXEC msdb.dbo.sp_cycle_agent_errorlog
配置代理錯誤日志文件記錄數的大小(行數):企業管理器;EXEC msdb.dbo.sp_set_sqlagent_properties @jobhistory_max_rows=1000,
配置代理錯誤日志文件記錄每個作業的最大記錄的大小(行數):企業管理器;EXEC msdb.dbo.sp_set_sqlagent_properties @jobhistory_max_rows_per_job=100
四 常見問題
q:為什麼sql代理錯誤日志文件的內容始終為空,無法進行錯誤信息的日志記錄?
a:重新配置sql代理錯誤日志文件的編碼格式為非oem——即配置為unicode編碼,可以解決問題
q:為什麼在使用企業管理器查看sql代理錯誤日志時,日志查看器出現異常,“unicode file expected”?
a:重新配置sql代理錯誤日志文件的編碼格式為非oem——即配置為unicode編碼,可以解決問題
q:為什麼企業管理器、sms 無法回收sql2000的sql代理錯誤日志文件?
a:sqlserver2000的sql 代理錯誤日志的文件 不支持回收!