2024年1月21日发(作者:)
金蝶知识库文档
SQL Server ERRORLOG过大处理办法
本期概述
本文档适用于 K/3 所有版本
本文档针对数据库运行性能进行讲解,通过本文档的学习可以了解当数据库SQL
Server 出现错误日志ERRORLOG文件过大时的处理方法
版本信息
2013年02月27日 V1.0 编写人:卢锦煌
2013年02月28日 V2.0 审核人:崔志佳
版权信息
本文件使用须知
著作权人保留本文件的内容的解释权,并且仅将本文件内容提供给阁下个人使用。对于内容中所含的版权和其他所有权声明,您应予以尊重并在其副本中予以保留。您不得以任何方式修改、复制、公开展示、公布或分发这些内容或者以其他方式把它们用于任何公开或商业目的。任何未经授权的使用都可能构成对版权、商标和其他法律权利的侵犯。如果您不接受或违反上述约定,您使用本文件的授权将自动终止,同时您应立即销毁任何已下载或打印好的本文件内容。
著作权人对本文件内容可用性不附加任何形式的保证,也不保证本文件内容的绝对准确性和绝对完整性。本文件中介绍的产品、技术、方案和配置等仅供您参考,且它们可能会随时变更,恕不另行通知。本文件中的内容也可能已经过期,著作权人不承诺更新它们。如需得到最新的技术信息和服务,您可向当地的金蝶业务联系人和合作伙伴进行咨询。
著作权声明著作权所有 20xx金蝶软件(中国)有限公司。
所有权利均予保留。
金蝶软件(中国)有限公司 客户服务中心 第 1 页 共 12 页
金蝶知识库文档
目 录
1. 应用场景分析 ............................................................. 3
2. 解决方案 ................................................................. 5
2.1 手动执行存储过程清除 ...................................................................................................... 6
2.2 定期执行存储过程清除 ...................................................................................................... 7
金蝶软件(中国)有限公司 客户服务中心 第 2 页 共 12 页
金蝶知识库文档
1. 应用场景分析
客户通常会将SQL Server数据库软件安装在系统盘目录中,然而当系统运行一段时间以后,可能会出现系统盘空间资源被耗尽的情况,此时检查发现SQL Server安装目录LOG文件夹下的ERRORLOG文件已经达到几十个GB的大小,占去了系统盘的大部分空间,影响系统的正常运行。
ERRORLOG文件记录了数据库的错误日志信息,例如自动备份不成功或者数据库登录失败产生的信息等。SQL Server 2000数据库ERRORLOG文件默认保存在C:Program
FilesMicrosoft SQL ServerMSSQLLOG文件夹中,SQL Server 2005数据库ERRORLOG文件默认保存在C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLLOG文件夹中,SQL
Server 2008数据库ERRORLOG文件默认保存在C:Program FilesMicrosoft SQL
ERVERMSSQLLog文件夹中。本文档以SQL Server 2005数据库为例进行详解。
默认情况下,SQL Server保存7个ERRORLOG文件,文件名称分别为:ERRORLOG、ERRORLOG.1、ERRORLOG.2、ERRORLOG.3、ERRORLOG.4、ERRORLOG.5以及ERRORLOG.6,当前的错误日志文件“ERRORLOG”没有扩展名,ERRORLOG文件中包含最新的错误日志信息,ERRORLOG.6文件中包含最老的错误日志信息,如图-1所示。
图-1 ERRORLOG文件
这些ERRORLOG文件对应的就是SQL Server数据库【对象资源管理器】→【管理】项目下的“SQL Server日志”,如图-2所示。“当前”对应“ERRORLOG”文件,“存档#6”对应“ERRORLOG.6”文件。
金蝶软件(中国)有限公司 客户服务中心 第 3 页 共 12 页
金蝶知识库文档
图-2 SQL Server 日志
每次重启数据库服务时,这些日志文件都将作如下循环:
• 删除 ERRORLOG.6 文件;
• 将原ERRORLOG.5 文件更名为 ERRORLOG.6 文件;
• 将原ERRORLOG.4 文件更名为 ERRORLOG.5 文件;
• 将原ERRORLOG.3 文件更名为 ERRORLOG.4 文件;
• 将原ERRORLOG.2 文件更名为 ERRORLOG.3 文件;
• 将原ERRORLOG.1 文件更名为 ERRORLOG.2 文件;
• 将原ERRORLOG文件更名为ERRORLOG.1 文件;
• 创建一个新的ERRORLOG文件。
也就是先进先出原则,如此循环6次,就可以将ERRORLOG都更新一遍。
重启数据库服务操作,可以在【对象咨询管理器】中右键单击根节点选择重新启动;也可以依次打开【控制面板】→【管理工具】→【服务】,进入【服务】功能,右键单击“SQL
Server (MSSQLSERVER)”服务选择【重新启动】来重启数据库服务。
然后,在【对象咨询管理器】中右键单击【SQL Server日志】,选择【刷新】菜单后得到重启后的迭代日志文件。例如在2012-2-23 14:43时重启SQL服务后,状态如图-3所示。
金蝶软件(中国)有限公司 客户服务中心 第 4 页 共 12 页
金蝶知识库文档
图-3 重启数据库服务后的ERRORLOG文件
每个ERRORLOG文件记录了“重启数据库服务前”到“上一次重启数据库服务后”的错误日志信息,由于某时间段记录了较多错误,ERRORLOG文件就会增大,导致占据的磁盘空间很大,影响服务器性能。
对于数据库管理员来说,在日常SQL Server的维护中,查看 SQL Server 错误日志可以用来确认服务的运行情况,例如服务的启停、备份和还原操作、登录认证情况等等。SQL
Server默认保留6次错误日志文件,1次当前错误日志文件,在产生新的错误日志的同时,最老的那个日志也被删除了,如果想保留更多次的错误日志,可以通过如下方法来设置:
在【SQL Server Management Studio】窗口中,右键单击“管理”下的“SQL Server日志”功能,选择【配置】菜单,弹出【配置SQL Serve错误日志】窗口,如图-4所示。单击勾选“限制错误日志文件在回收之前的数目”复选框,并且将“最大错误日志文件数”设置为希望的数值,设置的数值在6到99之间即可。
图-4 配置错误日志文件数
2. 解决方案
SQL Server数据库服务器上的ERRORLOG文件有时候会出现文件很大的情况,尤其是将登录认证情况记录到错误日志的情况之下,可能严重影响服务器性能。此时,需要重启SQL
金蝶软件(中国)有限公司 客户服务中心 第 5 页 共 12 页
金蝶知识库文档
Server服务,如果SQL Server不重启,ERRORLOG文件就会持续变大。
实际应用过程中,有时并不是很方便重启数据库,或者重启服务后没几天ERRORLOG文件又迅速变大,本文档将针对不重启服务情况,分别介绍两种常用的解决办法。
注意:如果需要保存这些ERRORLOG文件,需要先将当前的所有ERRORLOG文件拷贝后再执行以下方法操作。
2.1 手动执行存储过程清除
通过存储过程sp_cycle_errorlog来生成新的日志文件,并循环错误日志扩展编号,就如同重新启动数据库服务时候一样。具体操作步骤如下:
打开【SQL Server Management Studio】窗口,选中根目录并单击工具栏上的【新建查询】按钮,在查询窗口中输入命令“EXEC sp_cycle_errorlog”,然后单击工具栏上的【执行】按钮,这个命令强制SQL Server完成一次ERRORLOG文件的切换,提示“DBCC 执行完毕”即可,如图-5所示。
图-5 执行存储过程
执行完成后单击【对象资源管理器】窗口中的【刷新】按钮,发现此时已进行了一次循环迭代,如图-6所示,可执行多次存储过程。
金蝶软件(中国)有限公司 客户服务中心 第 6 页 共 12 页
金蝶知识库文档
图-6 执行存储过程后的ErrorLog 文件
2.2 定期执行存储过程清除
在实际情况中,每次手动清除日志后,可能过几天错误日志文件又变得很大了,此时建议通过定期切换写入error log的方法,一般可以使用DBCC errorlog命令来操作,在查询窗口中输入命令“Exec('DBCC ErrorLog')”,然后单击工具栏上的【执行】按钮即可。
或者通过建立定时执行存储过程“sp_cycle_errorlog”的作业,这样日志文件的大小将被控制在合理的范围之内。一般可以在SQL Server代理作业中使用“DBCC errorlog”命令来完成定期切换error log,具体设置步骤如下:
第一步:设置自动启动SQL Server Agent服务
单击【开始】菜单下的【运行】,输入命令“”并单击【确定】按钮,打开【服务】窗口,在右侧服务列表中找到“SQL Server Agent (MSSQLSERVER)”服务,右键单击该服务选择【属性】菜单,设置“启动类型”为“自动”,并单击【启动】按钮启动该服务,如图-7所示,最后单击【确定】按钮保存设置。
金蝶软件(中国)有限公司 客户服务中心 第 7 页 共 12 页
金蝶知识库文档
图-7 设置代理服务启动类型并启动服务
第二步:创建SQL Server代理作业
打开【SQL Server Management Studio】窗口,依次展开【数据库服务器】→【SQL Server代理】,右键单击【作业】节点,选择【新建作业】菜单,如图-8所示。在打开的【新建作业】窗口中,选择“常规”页签中输入作业名称,如图-9所示。
金蝶软件(中国)有限公司 客户服务中心 第 8 页 共 12 页
金蝶知识库文档
图-8 设置【新建作业】
图-9 新建作业向导
第三步:选择“步骤”页签,单击【新建】,在弹出的【新建作业步骤】窗口中输入“步骤名称”,“数据库”默认选择为“master”,然后在“命令”框中输入以下语句,并单击【确金蝶软件(中国)有限公司 客户服务中心 第 9 页 共 12 页
金蝶知识库文档
定】按钮保存即可,如图-10所示。
create procedure sp_cycle_errorlog
as
if (not (is_srvrolemember('sysadmin') = 1)) -- Make sure that it is the
sysadmin role to execute the code.
begin
return -- here can raise an error.
return(1)
end
dbcc errorlog
return (0)
GO
图-10 【新建作业步骤】
第四步:选择“计划”页签,单击【新建】按钮,在弹出的【新建作业计划】窗口中输入计划名称,按业务需求设置执行参数,然后单击【确定】按钮保存,如图-11所示。
金蝶软件(中国)有限公司 客户服务中心 第 10 页 共 12 页
金蝶知识库文档
图-11 新建作业计划
第五步:回到【新建作业】页面,单击【确定】按钮“即创建完成,如图-12所示。
图-12 完成【新建作业】
第六步:设置好“ClearErrorLog”作业计划后,状态显示为“未运行”,右键单击该作金蝶软件(中国)有限公司 客户服务中心 第 11 页 共 12 页
金蝶知识库文档
业,选择【开始作业】菜单,如图-13所示,执行后提示“成功”状态,单击【关闭】按钮即可,如图-14所示。
图-13 开始作业
图-14 执行作业成功
金蝶软件(中国)有限公司 客户服务中心 第 12 页 共 12 页


发布评论