[SQL Server] 数据库日志文件自动增长导致连接超时的分析

1、现象、问题描述

客户反映某客户端登陆不了,客户端程序日志显示“连接数据库超时”;检查对应的数据库服务器,日志显示“Autogrow of file ‘某数据库日志文件‘ in database ‘某数据库‘ was cancelled by user or timed out after 2391 milliseconds.  Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.”

2、关键过程分析

   根据数据库日志显示,是数据库事务日志文件已满,在自动增长的时候,连接会话已主动超时断开。

1.         SQL Server需要保留以下几种类型的日志

a)         所有没有经过"检查点"的日志记录;(数据库默认1分钟左右做一次检查点)

b)        所有没有提交的事务所产生的日志记录,以及在它们之后的所有日志记录(占用日志较大空间的操作有:基于事务日志的数据库恢复;创建/重建索引;操作大量数据;程序打开了游标却未取走数据);

c)        所有要做备份的日志记录;(非“简单”模式下,日志都被认为是需要备份的)

d)        有其他需要读取日志的数据库功能模块. (事务型复制和数据库镜像,在它们没有读取日志之前,所有日志均保留);

2.         事务日志文件在自动增长空间时,需要将新增加的空间全部“置0”(数据文件默认不需要),期间会产生大量闩锁并使得响应速度变慢。(设置有“超时退出”的客户端程序,此时一般就无法正常连接;数据库程序默认未设“超时”,所以一般会耐心等待日志文件增长完成。)

3、结论、解决方案及效果

结论:问题发生前,事务日志文件已经达25G,在自动增加10%空间(2.5G)的时候,游戏程序连接时等待超时。

解决方法为:

定期清空不需要备份的事务日志(建议在“完全备份/差异备份”执行之前清空日志);

BACKUP LOG 数据库名 WITH WITH NO_LOG

或者将数据库选项设为“简单模式”(SQL 2008仅支持该方法,不支持手动清空日志)

4、经验总结、预防措施和规范建议

数据库的自动增长,建议设定为“**MB”,减少使用“**%”;

对不需要备份日志的数据库,在备份数据库前清空日志,或定期清空;

将每周“日志增长大小”监控,改为每日“日志当前大小及使用率”监控,超过(“5GB和80%时报警”);

5、备注

参考 http://support.microsoft.com/default.aspx?scid=kb;en-us;2091024&sd=rss&spid=2855

http://msdn.microsoft.com/en-us/library/ms175935.aspx

时间: 2024-10-26 04:30:06

[SQL Server] 数据库日志文件自动增长导致连接超时的分析的相关文章

SQL Server 默认跟踪应用4 -- 检测日志文件自动增长

SQL Server 默认跟踪应用4 -- 检测日志文件自动增长 用户抱怨SQL Server数据库运行非常慢.通过默认跟踪的这个查询,可以识别出log file autogrow活动导致的长时间运行.为什么如此之慢? SELECT te.name AS [trace_events_name] , t.DatabaseName , t.NTDomainName , t.ApplicationName , t.LoginName , t.Duration , t.StartTime , t.End

SQL Server 2005 日志文件过大处理

由于安装的时候没有计划好空间,默认装在系统盘,而且又没有做自动备份.截断事务日志等,很快LDF文件就达到十几G,或者几十G ,此时就不得不处理了. 备份和计划就不说了,现在就说下怎么把它先删除吧: 1:先分离数据库 2:为了保险,先不要删除,把LDF文件重命名下 3:附件数据库. 4:OK. 以上可能遇到的问题: 1:有用户连接,无法分离(勾选“断开所有连接”) 2:附件数数据库的时候提示找不到LDF文件,不要慌,在附件的时候,把LDF的路径一项删除,然后点击"确定",这样就附件成功了

清理ms sql server 大日志文件数据

1.手动分离数据库: 2.手动删除日志文件: 3.重新生成日志文件: CREATE DATABASE FMIS0 ON (FILENAME = 'E:\FMIS0_DATA\FMIS0-Date') FOR ATTACH_REBUILD_LOG ;GO 清理ms sql server 大日志文件数据

收缩sql server数据库日志

项目中,可能数据库(sql server数据库)日志太多,占了很多磁盘空间,可以通过收缩数据库日志,减少日志文件大小. 下面以Northwind数据库为例: 1.把数据库的恢复模式设置为“简单模式”: 选择Northwind数据库-右键-属性, 在弹出的数据库属性窗口中,选择“选项”-设置恢复模式为“简单”, 点击确定按钮,如下图: 2.收缩数据库日志: 选择Northwind数据库-右键-任务-收缩-文件,如下图: 在弹出的“收缩文件”窗口里,文件类型选择“日志”,收缩操作勾选“释放未使用的空

SQL SERVER 清理日志文件

代码清理: USE[master] GO 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 A

SQL Server数据库mdf文件中了勒索病毒,扩展名变为arrow

SQL Server数据库mdf文件中了勒索病毒id-8CE52640.[[email protected]].arrow.扩展名变为arrow .ldf.id-8CE52640.[[email protected]].arrow.mdf.id-8CE52640.[[email protected]].arrow .ldf.id-923C7C92.[[email protected]].arrow.mdf.id-923C7C92.[[email protected]].arrow 解密联系QQ8

SQL Server数据库mdf文件中了勒索病毒,扩展名变为.java

**SQL Server数据库mdf文件中了勒索病毒[email protected]].java.扩展名变为.java .mdf.id-923C7C92.[[email protected]].java.ldf.id-923C7C92.[[email protected]].java 解密联系QQ80554803,TEL18620906802(微信) 原文地址:http://blog.51cto.com/13545122/2097140

SQL Server数据库mdf文件中了勒索病毒**...MDF.CHIEF

SQL Server数据库mdf文件中了勒索病毒...MDF.CHIEF.扩展名变为CHIEF **.MDF.CHIEF **.LDF.CHIEF 解密联系QQ80554803,TEL18620906802(微信) 原文地址:http://blog.51cto.com/13545122/2162494

SQL Server数据库mdf文件中了勒索病毒.SEXY。扩展名变为SEXY

*SQL Server数据库mdf文件中了勒索病毒.mdf.SEXY.扩展名变为SEXY** SQL,数据库,勒索病毒,mdf文件中毒,SEXY ***.ldf.SEXY ***.mdf.SEXY ***.ldf.SEXY ***.mdf.SEXY 解密联系QQ80554803,TEL18620906802(微信) 原文地址:http://blog.51cto.com/13545122/2164463