標籤:
SQL Server 使用ErrorLog記錄SQL Server啟動和運行過程中的資訊,具體資訊參考:《SQLSERVER errorlog講解》。通常來說,ErrorLog是指SQL Server Error Log,其實,SQL Server存在另外一種類型,SQL Server Agent ErrorLog,用於記錄Agent的運行資訊。
預設情況下,SQL Server 儲存 7 個 ErrorLog 檔案,分別命名為: ErrorLog,ErrorLog.n(n=1,2,3,4,5,6)。ErrorLog 檔案包含的資訊最新,ErrorLog.6 檔案包含的資訊最老。每次重啟 SQL Server 時,這些記錄檔都做如下迴圈: 刪除 ErrorLog.6 檔案,將ErrorLog.5重新命名為ErrorLog.6,依次類推,直到將ErrorLog重新命名為ErrorLog.1,最後建立一個ErrorLog檔案,用於儲存SQL Server 運行過程的資訊。
SQL Server Agent ErrorLog的檔案名稱是:SQLAgent.n(n=1,2,3,4,5,,,,)。
ErrorLog的存放路徑是在:C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log
1,使用SSMS查看
2,使用TSQL 指令碼查看
2.1 查看Errorlog的資訊
使用 sys.xp_enumerrorlogs 查看 ErrorLog Files的建立日期和大小,其建立日期就是第一條記錄插入的日期。
exec sys.xp_enumerrorlogs
切換ErrorLog,查看ErrorLog Files的資訊
dbcc errorlog
2.2,讀取ErrorLog的資訊
SQL Server提供了預存程序sys.xp_readerrorlog及sys.sp_readerrorlog,用於查看Errorlog記錄的錯誤記錄檔。
sys.xp_readerrorlog 有7個參數
1. 存檔編號(0~99),其值是 sys.xp_enumerrorlogs返回的Archive#欄位的值, 0 代表的是ErrorLog,1代表的是ErrorLog.1。
2. 日誌類型(1為SQL Server日誌,2為SQL Server Agent日誌)
3. 查詢包含的字串
4. 查詢包含的字串,參數4和參數5的邏輯關係是and(與關係)
5. LogDate開始時間
6. LogDate結束時間
7. 結果排序,按LogDate排序(Desc、Asc)
sys.sp_readerrorlog有四個參數,和sys.xp_readerrorlog的前四個參數相同,sys.sp_readerrorlog內部使用sys.xp_readerrorlog來實現。
查看登陸失敗的錯誤記錄檔,可以看到參數4和參數5是過濾Text欄位。
exec sys.sp_readerrorlog 0,1,‘login‘,‘failed‘
3,ErrorLog的Rollover
如果Current ErrorLog 檔案很大,那麼載入和查看的過程十分緩慢,可以運行 sys.sp_cycle_errorlog 或 DBCC ErrorLog,或exec (‘DBCC ErrorLog‘),手動強制ErrorLog 檔案迭代,避免單個ErrorLog File Size過大。每次啟動 SQL Server 時,ErrorLog會自動迭代。由於ErrorLog的Rollover會刪除時間最老的ErrorLog.6 檔案,如果需要儲存ErrorLog,在執行 sys.sp_cycle_errorlog 或 DBCC ErrorLog 之前,需要將ErrorLog.6 檔案複製到其他儲存介質上。
推薦閱讀:
SQL Server 錯誤記錄檔過濾(ERRORLOG)
SQL Server 錯誤記錄檔收縮(ERRORLOG)
Appendix
Talking about SQL Server and SQL Server agent error logs. Here are few interesting things that we can do from query analyzer in order to read and analyze the SQL Server and agent error logs.
1, sys.XP_READERRORLOG
Syntax: xp_ReadErrorLog a,b,c,d
a -> default is 0. It accepts only integers. 0 mean the current error log, 1 means 1st archive and so on.
b -> default is 1. Accepts value equals 1 for SQL Server error log and 2 for SQL Agent error log.
c -> accepts varchar chanracter upto 255 characters. Default is Null.
d -> accepts varchar chanracter upto 255 characters. Default is Null.
1) To read the current SQL Server error log i.e. ERRORLOG file
xp_readerrorlog xp_readerrorlog 0 xp_readerrorlog 0,1
2) TO read SQL Server error log archive 1 i.e. ERRORLOG.1 file
xp_readerrorlog 1 xp_readerrorlog 1,1
3) To read the current SQL Server Agent error log i.e. SQLAGENT.OUT file
xp_readerrorlog 0,2
4) To read SQL Server error log archive 1 i.e. SQLAGENT.1 file
xp_readerrorlog 1,2
5) To search for any specific text in current SQL Server error log
xp_ReadErrorLog 0, 1, ‘Failed‘
6) To search for entries in current SQL Server error log which contain both ‘Failed’ and ‘Login’ in a row.
xp_ReadErrorLog 0, 1, ‘Failed‘.‘Login‘
2,sys.XP_ENUMERRORLOGS
Syntax: xp_enumerrorlogs a
a -> default is 1. Accepts value equals 1 for SQL Server error log and 2 for SQL Agent error log.
1) List all the avilable SQL Server error log archives, there last modified date and size.
xp_enumerrorlogs xp_enumerrorlogs 1
2) List all the avilable SQL Server Agent error log archives, there last modified date and size.
xp_enumerrorlogs 2
3,recycle errorlog
To Recycle Current SQL Server Error Log
exec sp_cycle_errorlog
To Recycle Current SQL Server Agent Error Log
exec sp_cycle_agent_errorlog
參考doc:
SQL SERVER – Read Error Log Data using sp_readerrorlog – System Stored Procedure
Reading the SQL Server log files using TSQL
Searching through the SQL Server error logs
SQL Server ErrorLog