关于数据库日志log

 先查看日志log如何被调用的,在TSQL中执行

EXEC master.dbo.sp_enumerrorlogs  

  

 

    显示结果为

   

 

    有了存档号,接着查看某一个日志文件异常大的log内容(图中的异常日志已经被清除了,所以这里记录的时候暂且认为存档#为4的日志是异常大文件)

    接下来看看存档4的log内容,在TSQL中执行 --根据存档号查看该档日志内容  

  1. EXEC master.dbo.xp_readerrorlog 0  
  2. EXEC master.dbo.xp_readerrorlog 1  
  3. EXEC master.dbo.xp_readerrorlog 2  
  4. EXEC master.dbo.xp_readerrorlog 3  
  5. EXEC master.dbo.xp_readerrorlog 4  
  6. EXEC master.dbo.xp_readerrorlog 5  
  7. --因为我只需要查看文件大小异常的4号档,所以执行  
  8. EXEC master.dbo.xp_readerrorlog 4  

 

    通常结果会返回如下图的内容

   

 

    话说到这儿,才开始我那愚蠢且无聊的做法。(直到现在我仍然认为这个做法相当怪异)

    因为这个日志log内容非常大,大约为数百万行,导致用sqldiag提取的__sp_sqldiag_Shutdown.OUT文件大小有近2G。于是有清除这个日志的想法,因为已经备档(备档的方式是将内容存为文本),所以可以清除日志。

    于是我就想找到这个log内容是存放在数据库MASTER的哪个表中,以便于干掉它。找来找去,只让我看到xpstar.dll 和xpstar90.dll这些信息。既然是调用动态链接库,我也要看看这个dll的内容,于是从网上下载ReflectorDepends 进行反编译,接着反编译出错。

    到这里,其实GOD已经提醒我该走出去呼吸一下新鲜空气再回来思考,结果我没有那样做。这段过程大约花费近3个小时时间,用《 Becoming a Technical Leader 》里的话说,我已经进入了神游状态,当然我自己丝毫没有发觉。

    隔日清晨,来到办公室,当我下意识的打开系统中下面路径时,“密码”被破译了。其实只要删除log目录下ERRORLOG以及一系列ERRORLOG.1文件即可。

    X:/Program Files/Microsoft SQL Server/MSSQL10.MSSQLSERVER/MSSQL/Log

    其实我可以对自己说一句“神啊”,从结果看过程原来一切都是那么简单。

 

    当然,为了清除这个日志log内容,也有问一些朋友,不过他们都误以为我要清除ldf日志文件。写下来也是告诉自己:方向错了,停下来就是前进!!

posted @ 2011-11-18 21:45  @#¥%……  阅读(664)  评论(0编辑  收藏  举报