代码改变世界

MS SQL 需要定期清理日志文件

2013-08-10 09:30  潇湘隐者  阅读(6678)  评论(6编辑  收藏  举报

前言碎语

    关于对SQL SERVER 日志文件管理方面了解不多的话,可以参考我的这篇博客文章“MS SQL 日志记录管理”,不过这篇文章只是介绍对SQL SERVER日志记录的深入认知了解,并没有提出如何管理日志文件的方案,如果你有兴趣的话,倒不妨可以钻研一下如何管理、提取日志记录信息,这是数据库精细化管理的一个方面,如果手头管理的服务器过多,事情过多,你很难做到精细化管理!很多事情都忙不过来,需要时间去做!

 

问题现象

    这几天有台数据库服务器一天会收到8封左右的告警邮件,大致内容如下:

DATE/TIME:     2013-8-4 9:19:47

 

DESCRIPTION: A user request from the session with SPID 194 generated a fatal exception. SQL Server is terminating this session. Contact Product Support Services with the dump produced in the log directory.


 

COMMENT:     (None)

 

JOB RUN:          (None)
View Code

 

     通过查看错误日志记录,查找具体原因时,需要找到具体日志文件,例如“C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\SQLDump5328.txt”

结果我在C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\下,发现有大量2011、2012年的生成的SQLDump.txt, SQLDump.log , SQLDump.mdmp文件,尤其是后缀为mdmp的文件,大小一般3M左右,结果我删除了大量日期为2011年,2012年生成的SQLDump文件后,总共释放了9GB多的空间,暴汗啊,也就是说日积月累,这类文件你不搭理的话,会由量变到质变,达到一个惊人的量。

clipboard[3]

 

 

解决方案

 

  由于近期生成的的这类日志文件是有价值的,有助于你定位错误,所以最好不要删除,这类日志文件我建议一般保留一个星期的周期,超过一个星期的这类日志文件,可以通过下面一些方案处理:

        1: 定期手工检查,删除这些日志文件。这是下下策,谁能保证你不会忘记这事? 人工成本很贵的!

        2: 写一个dos的批处理文件,然后通过Task Scheduler定期执行清理

        3: 写一个dos的批处理文件,在SQLAgent 调用 CMDEXEC 完成批处理作业

        4:通过powershell脚本来处理。