前言碎语
关于对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)
通过查看错误日志记录,查找具体原因时,需要找到具体日志文件,例如“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多的空间,暴汗啊,也就是说日积月累,这类文件你不搭理的话,会由量变到质变,达到一个惊人的量。
解决方案
由于近期生成的的这类日志文件是有价值的,有助于你定位错误,所以最好不要删除,这类日志文件我建议一般保留一个星期的周期,超过一个星期的这类日志文件,可以通过下面一些方案处理:
1: 定期手工检查,删除这些日志文件。这是下下策,谁能保证你不会忘记这事? 人工成本很贵的!
2: 写一个dos的批处理文件,然后通过Task Scheduler定期执行清理
3: 写一个dos的批处理文件,在SQLAgent 调用 CMDEXEC 完成批处理作业
4:通过powershell脚本来处理。