sqlserver日志自动增长问题记录
异常信息
Autogrow of file '数据库日志文件名' in database '数据库' was cancelled by user or timed out after 10062 milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.
检查数据库日志文件,发现日志文件大小四十多G,数据日志文件自动增长模式为10%来增长 相当于一次性增长4个多G
sqlserver数据库日志文件自动扩容时需要做很多的事情,非常消耗性能,因此再扩容期间;对于数据库的操作就都会被延迟等等;等到文件扩容结束才能恢复正常
解决方案
1.先对现有数据库日志文件进行清理;采用压缩方式将日志数据清理掉
2.修改日志文件自动增长方式;不要按照百分比进行增长,根据自己数据库文件大小增长情况合理设置 ;一般设置一次增长再100—200M;
附sqlserver2008日志清理方法
USE [master]
GO
--查询 日志信息可以看到status=0的日志,代表已经备份到磁盘的日志文件;而status=2的日志还没有备份。当收缩日志文件时,收缩掉的空间其实就是 status=0的空间,
--如果日志物理文件无法减小,这里一定能看到非常多status=2的记录。
DBCC LOGINFO('数据库文件名')
--清楚status=2的记录。
sp_removedbreplication '数据库文件名'
--收缩之前一定要情况status=2的记录,否则无法收缩成功
--开始收缩
ALTER DATABASE [数据库文件名] SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE [数据库文件名] SET RECOVERY SIMPLE
GO
USE [数据库文件名]
GO
DBCC SHRINKFILE(N'日志文件名' , 11, TRUNCATEONLY)
GO
USE [master]
GO
ALTER DATABASE [数据库文件名] SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE [数据库文件名] SET RECOVERY FULL --还原为完全模式
GO
--收缩结束