Reading the SQL Server log files using T-SQL

http://www.mssqltips.com/tip.asp?tip=1476

Problem
O
ne of the issues I have is that the SQL Server Error Log is quite large and it is not always easy to view the contents with the Log File Viewer.  In a previous tip "Simple way to find errors in SQL Server error log " you discussed a method of searching the error log using VBScript.  Are there any other easy ways to search and find errors in the error log files?

 

Solution
SQL Server 2005 offers an undocumented system stored procedure sp_readerrorlog .  This SP allows you to read the contents of the SQL Server error log files directly from a query window and also allows you to search for certain keywords when reading the error file.  This is not new to SQL Server 2005, but this tip discusses how this works for SQL Server 2005.

This is a sample of the stored procedure for SQL Server 2005.  You will see that when this gets called it calls an extended stored procedure xp_readerrorlog.

CREATE PROC  [sys].[sp_readerrorlog] (
   
@p1      INT =  0 ,
   
@p2      INT =  NULL,
   
@p3      VARCHAR ( 255 NULL,
   
@p4      VARCHAR ( 255 NULL)
AS
BEGIN

   IF 
(NOT  IS_SRVROLEMEMBER ( N'securityadmin' 1 )
   
BEGIN
      RAISERROR
( 15003 ,- 1 ,- 1 N'securityadmin' )
      
RETURN  ( 1 )
   
END
   
   IF 
( @p2  IS  NULL)
       
EXEC  sys. xp_readerrorlog  @p1
   
ELSE
       EXEC 
sys. xp_readerrorlog  @p1 , @p2 , @p3 , @p4
END

This procedure takes four parameters:

  1. Value of error log file you want to read: 0 = current, 1 = Archive #1, 2 = Archive #2, etc...
  2. Log file type: 1 or NULL = error log, 2 = SQL Agent log
  3. Search string 1: String one you want to search for
  4. Search string 2: String two you want to search for to further refine the results

If you do not pass any parameters this will return the contents of the current error log.

Here are a few examples:

Example 1

EXEC  sp_readerrorlog  6

This statement returns all of the rows from the 6th archived error log.


Example 2

EXEC  sp_readerrorlog  6 1 '2005'

This returns just 8 rows wherever the value 2005 appears.

Example 3

EXEC  sp_readerrorlog  6 1 '2005', 'exec'

This returns only rows where the value '2005' and 'exec' exist.


xp_readerrrorlog

Even though sp_readerrolog accepts only 4 parameters, the extended stored procedure accepts at least 7 parameters.

If this extended stored procedure is called directly the parameters are as follows:

  1. Value of error log file you want to read: 0 = current, 1 = Archive #1, 2 = Archive #2, etc...
  2. Log file type: 1 or NULL = error log, 2 = SQL Agent log
  3. Search string 1: String one you want to search for
  4. Search string 2: String two you want to search for to further refine the results
  5. Search from start time  
  6. Search to end time
  7. Sort order for results: N'asc' = ascending, N'desc' = descending
EXEC  master.dbo. xp_readerrorlog  6 1 '2005' 'exec' , NULL, NULL,  N'desc'
EXEC  master.dbo. xp_readerrorlog  6 1 '2005' 'exec' , NULL, NULL,  N'asc'


Next Steps

  • As you can see this is a much easier way to read the error logs and to also look for a specific error message without having to use the Log File Viewer.
  • Add this to your monitoring routine where this is run daily to search for errors or issues.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值