Sqlserver:代理錯誤日誌,知多少?

weixin_34344677發表於2009-12-28
一 概述

預設情況下,SQL Server 代理建立錯誤日誌來記錄警告和錯誤。日誌中顯示下列警告和錯誤:

  • 警告訊息,提供有關潛在問題的資訊,例如“作業 <job_name> 在執行時被刪除”。
  • 錯誤訊息,通常需要系統管理員干預,例如“無法啟動郵件會話”。可以通過 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 Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLAGENT.out"'
  • 重新命名 SQL Server 代理錯誤日誌 ,重啟sql代理後生效 :企業管理器;EXEC msdb.dbo.sp_set_sqlagent_properties @errorlog_file=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLAGENT.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 代理錯誤日誌的檔案 不支援回收!

 

相關文章