澳门金沙vip 1

SQL Server 错误日志

 

在日常SQL Server的维护中,查看 SQL Server
错误日志可以用来确认服务的运行情况:例如服务的启停、备份和还原操作、登录认证情况等等,需要经常性的查看。

以前写过一篇博文“MS
SQL
日志记录管理”,里面介绍了如何设置SQL
Server的错误日志的最大归档数量,如果在SSMS的UI界面设置,可以从“Management”->
“SQL Server Logs” 右键单击选项“Configure”
去设置错误日志的个数,如下所示:

使用 SQL Server Management Studio 或文本编辑器都可以查看 SQL Server
错误日志。默认情况下,错误日志位于 Program Files/Microsoft SQL
Server/MSSQL.n/MSSQL/LOG/ERRORLOG 和ERRORLOG.n 文件中。默认保留有7个 SQL
Server 错误日志文件,分别是:ErrorLog,Errorlog.1~Errorlog.6
,当前的错误日志(文件ErrorLog)没有扩展名。每当启动 SQL Server
实例时,将创建新的错误日志ErrorLog,并将之前的ErrorLog更名为ErrorLog.1,之前的ErrorLog.1更名为ErrorLog.2,依次类推,原先的ErroLog.6被删除。

 

生产服务器上的ErrorLog文件有时候会碰到文件很大的情况,尤其将登录认证情况记录到错误日志的情况之下,此时使用SQL
Server Management
Studio或者文本编辑器查看错误日志查看的时候速度会是个问题,对于这种情况,可以在不重新启动服务器的情况下,通过存储过程sp_cycle_errorlog来生成新的日志文件,并循环错误日志扩展编号,就如同重新启动服务时候一样。除了
Execute sp_cycle_errorlog 之外,也可以使用DBCC
ERRORLOG来实现同样的功能。在实际操作中,也可以通过建立一个Job定时去执行该存储过程,这样将日志文件大小控制在合理的范围之内。

 

SQL
Server默认保留7次错误日志文件,在产生新的错误日志的同时,最老的那个日志也被删除了,如果想保留更多次的错误日志,可以通过如下方法来设置(SQL
Server 2005):

 

打开 SQL Server Management Studio
在“管理”目录下,在SQL
Server日志上右键,点击“配置”
在弹出的“配置SQL
Server错误日志”窗口中,在“限制错误日志文件在回收之前的数目”复选框上打勾,并且将“最大错误日志文件数”设置为希望的数值。这个数值在6到99之间。
除了上述方法之外,也可以通过修改注册表的方式来修改。新建一个注册表项(如果有则修改之):HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MSSQLServer/MSSQLServer/NumErrorLogs,默认情况下,并没有这个注册表项,类型选择REG_DWORD,数值设置为希望保留的日志次数。修改注册表项的方法也可以通过以下存储过程来实现:

澳门金沙vip 1

澳门金沙vip,exec xp_instance_regwrite N’HKEY_LOCAL_MACHINE’,
N’Software/Microsoft/MSSQLServer/MSSQLServer’, N’NumErrorLogs’,
REG_DWORD, 20

 

在默认情况下,SQLServer的错误日志位于 Program Files/Microsoft SQL
Server/MSSQL.n/MSSQL/LOG/ERRORLOG 和ERRORLOG.n 文件中。

 

可以通过如下方法来修改该路径:

 

在 SQL Server 配置管理器中,单击“SQL Server 服务”。
在右窗格中,右键单击 SQL Server (<实例名>),再单击“属性”。
在“高级”选项卡的“启动参数”框中,有以分号 (;) 分隔的参数。其中,有一个以
–e开头的参数,修改该参数后面的路径,就可以将错误日志存放到指定的路径下,修改完成需要重启服务生效。

如果里使用脚本设置,如下所示,这个脚本也能实现修改最大错误日志数量的功能

 

 

运行 sp_cycle_errorlog 存储过程手动循环
ErrorLog

 

注意事项:旧的 ErrorLog
文件中的数据将被覆盖!如果必须保存旧的 ErrorLog
文件中的数据,则可将这些旧的 ErrorLog 文件复制到某个外部存储介质中。

USE [master];

 

GO

 

EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE',

 

    N'Software\Microsoft\MSSQLServer\MSSQLServer', N'NumErrorLogs', REG_DWORD,

 

    10;

 

GO