您的位置:首页 > 数据库 > 数据库管理

SQL SERVER ErrorLog文件

更多 2014/8/20 来源:数据库学习浏览量:1433
学习标签: SQL SERVER
本文导读:很多时候诊断SQL SERVER问题都需要看SQL SERVER的错误日志,ErrorLog 文件保存在"Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG"文件夹中。ERRORLOG文件记录了数据库的错误日志信息。下面介绍SQL SERVER ErrorLog文件的作用

一、SQL Server ErrorLog文件的初步认识

 

1、在日常SQL Server的维护中,查看SQL Server错误日志可以用来确认服务的运行情况:例如服务的启停、备份和还原操作、登录认证情况等等,如果SQLSERVER遇到了比较严重的问题,在errorlog里都会有所显示。

2、使用SQL Server Management Studio或文本编辑器都可以查看SQL Server错误日志。

3、默认情况下,错误日志位于Program Files/Microsoft SQL Server/MSSQL.n/MSSQL/LOG/ERRORLOG和ERRORLOG.n文件中。可以通过如下方法来修改该路径

(1)、在配置管理器中,单击“SQL Server服务”。

(2)、在右窗格中,右键单击SQL Server (<实例名>),再单击“属性”

(3)、在“高级”选项卡的“启动参数”框中,有以分号分隔的参数。其中,有一个以–e开头的参数,修改该参数后面的路径,就可以将错误日志存放到指定的路径下,修改完成需要重启服务生效。

 

4、默认保留有7个SQL Server错误日志文件,分别是:ErrorLog,Errorlog.1~Errorlog.6,当前的错误日志(文件ErrorLog)没有扩展名。

5、每当启动SQL Server实例时,这些日志文件都将作如下循环

(1)、删除ERRORLOG.6文件;

(2)、将原ERRORLOG.5文件更名为ERRORLOG.6文件;

(3)、将原ERRORLOG.4文件更名为ERRORLOG.5文件;

(4)、将原ERRORLOG.3文件更名为ERRORLOG.4文件;

(5)、将原ERRORLOG.2文件更名为ERRORLOG.3文件;

(6)、将原ERRORLOG.1文件更名为ERRORLOG.2文件;

(7)、将原ERRORLOG文件更名为ERRORLOG.1文件;

(8)、创建一个新的ERRORLOG文件。也就是先进先出原则,如此循环6次,就可以将ERRORLOG都更新一遍。

 

二、ErrorLog显示包括以下内容

 

(1)SQL的版本,以及Windows和Processor基本信息

(2)SQL的启动参数,以及认证模式,内存分配模式

(3)每个数据库是否能够被正常打开。如果不能,原因是什么

(4)数据库损坏相关的错误

(5)数据库备份与恢复动作记录

(6)DBCC CHECKDB记录

(7)内存相关的错误和警告

(8)SQL调度出现异常时的警告。一般SERVER HANG 服务器死机会伴随着有这些警告

(9)SQL I/O操作遇到长时间延迟的警告

(10)SQL在运行过程中遇到的其他级别比较高的错误

(11)SQL内部的访问越界错误(Access Violation)

(12)SQL服务关闭时间

 

三、在SSMS里也能看到SQL ErrorLog,SSMS里还包括筛选和搜索功能

 

 

四、Errorlog文件大的解决方法

 

SQL Server数据库服务器上的Errorlog文件有时候会出现文件很大的情况,可以在SQL Server不重启的情况下,解决Errorlog文件大的问题

 

方法一,手动执行存储过程清除

通过存储过程sp_cycle_errorlog来生成新的日志文件,并循环错误日志扩展编号,就如同重新启动数据库服务时候一样。操作步骤:

1、打开【SQL Server Managemen Studio】窗口,选中根目录并单击工具栏上的【新建查询】按钮,在查询窗口中输入命令“EXEC sp_cycle_errorlog”,

2、然后单击工具栏上的【执行】按钮,这个命令强制SQL Server完成一次ERRORLOG文件的切换,提示“DBCC执行完毕”即可,执行完成后单击【对象资源管理器】窗口中的【刷新】按钮发现此时已进行了一次玄幻迭代,可执行多次存储过程

 

方法二,定期执行存储过程清除

 

在实际情况中,每次手动清除日志后,可能过几天错误日志文件又变得很大了,此时建议通过定期切换写入error log的方法,一般可以使用DBCC errorlog命令来操作,在查询窗口中输入命令“EXEC(‘DBCC Errorlog’)”,然后单击工具栏上的【执行】按钮即可

或者通过建立定时执行存储过程“sp_cycle_errorlog”的作业,这样日志文件的大小将被控制在合理的范围之内。一般可以在SQL Server代理作业中使用“DBCC errorlog”命令来完成定期切换error log,具体步骤:

 

1、设置自动启动SQL Server Agent服务

单击【开始】菜单下的【运行】,输入命令“service.msc”并单击【确定】按钮,打开【服务】窗口,在右侧服务列表中找到“SQL Server Agent(MSSQLSERVER)”服务,右键单击该服务选择【属性】菜单,设置“启动类型”为“自动”,并单击【启动】按钮启动该服务,最后单击【确定】按钮保存设置

 

2、创建SQL Server代理作业

打开【SQL Server Management Studio】窗口,依次展开【数据库服务器】——【SQL Server 代理】,右键单击【作业】节点,选择【新建作业】菜单,在打开的【新建作业】窗口中,选择“常规”页签中输入作业名称

 

3、选择“步骤”页签

单击【新建】在弹出的【新建作业步骤】窗口中输入”步骤名称“,”数据库“默认选择为”master“,然后在”命令“框中输入以下语句,并单击【确认】按钮保存即可

 

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

 

4、选择”计划“页签

单击【新建】按钮,在弹出的【新建作业计划】窗口中输入计划名称,按业务需求设置执行参数,然后单击【确定】按钮保存

 

5、回到【新建作业】页面,单击【确定】按钮即创建完成

6.设置好“ClearErrorlog”作业计划后,状态显示为“未运行”,右键单击该作业,选择【开始作业】菜单,执行后提示“成功”状态,单击【关闭】按钮即可

 

五、errorlog文件不能反映的问题有

 

(1)阻塞问题。只要阻塞还没有严重影响SQLSERVER的线程调度,errorlog里是不会有体现

(2)普通性能问题,超时问题。如果性能问题不是由于内存使用异常、线程调度异常,或者是I/O子系统反应非常缓慢,

而是由于表格或语句设计导致,errorlog里也不会有所反映

(3)Windows层面异常。

 

收藏
263
很赞
11