SQL Server Error Log 管理
SQL Server除了每个数据库有Log文件,即LDF文件外,SQL Server自己本身也有一个Error Log,位置存在安装目录下,Widows系统中log文件位于C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log。
Error log的文件数目可以配置,最多99个,默认6个,文件编号为ERRORLOG.1,2,3,4.....,还有一个文件没有编号,就叫ERRORLOG,这个文件是SQL Server当前的活动日志文件(active log),这个文件无法删除,其他的都可以删除。也就是说,ERRORLOG文件里是最新的日志信息,其他的文件都是以前的信息。
每次SQL Server重启动,所有的ERRORLOG文件要做一次切换,拿6个log文件来说,具体如下:
删除ERRORLOG.6中的所有数据
ERRORLOG.5的数据写入到ERRORLOG.6中
ERRORLOG.4的数据写入到ERRORLOG.5中
ERRORLOG.3的数据写入到ERRORLOG.4中
ERRORLOG.2的数据写入到ERRORLOG.3中
ERRORLOG.2的数据写入到ERRORLOG.1中
ERRORLOG的数据写入到ERRORLOG.1中
重新创建ERRORLOG文件
所以,如果SQL Server不重启,ERRORLOG文件就会变得很大,解决办法如下:
1. 如果需要保存就得Error log文件,则先把当前的所有ERRORLOG文件copy到其他存储介质
2. 运行命令: EXEC sp_cycle_errorlog,这个命令强制SQL Server做一次Error Log文件的切换
3. 把最大的log 文件删除
如果需定期切换error log,一般可使用DBCC errorlog命令在一个sql server的agent job 来完成。
create procedure sp_cycle_errorlog
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