一件关于数据库日志log的无聊事情

本文介绍了当遇到SQL Server日志文件过大时的一种处理方法。通过使用T-SQL语句查询日志存档号,并定位异常大的日志文件,最终通过删除特定的日志文件来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    为何说是无聊的记录呢?

    因为事先把问题想复杂了,事后发现的时候觉得更是无聊的行为。还是写下来,毕竟很少弄这么无聊的事情。

 

    事情起因是需要给服务器做性能基数(baseline),用sqldiag 提取了大量的log信息,当然这里的数据库日志并不是指ldf文件。当我打开SQL 2005或2008的对象资源管理器-->管理-->SQL Server 日志察看发现日志大约有百万行,当然原因我就不说了。

    日志log数据太大怎么办?

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

       

    显示结果为

   

 

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

    接下来看看存档4的log内容,在TSQL中执行

   

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

   

 

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

    因为这个日志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日志文件。写下来也是告诉自己:方向错了,停下来就是前进!!

 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值