mssqlserver提示错误 80040e31 ([ODBC SQL Server Driver]超时
使用mssqlserver数据库的朋友可能碰到过关于,如:Microsoft OLE DB Provider for SQL Server 错误 \'80040e31\' ([ODBC SQL Server Driver]超时已过期),下面我总结了一些解决办法。
原因: .
数据库设置时,[文件增长]按百分比来增长,当数据库文件很大时(1G以上),新增操作都会报超时,而这时候其实CPU、内存占用率都非常非常的低。 ..
解决方法:
把上述的文件增长这里设置为一个更低的百分比或者直接指定增加多少兆字节。 !
2.SQL Server数据库超时设置 .
修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒。 。
企业管理器中的设置: .
A、在企业管理器中,选择菜单上的"工具",再选择"选项"; ...
B、在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡; .
C、在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 30。 ..
查询分析器中的设置: .
单击“工具”->"选项"->"连接"; 将登录超时设置为一个较大的数字,连接超时改为0。 对真正的成功者来说,不论他的生存条件如何,都不会自我磨灭
3.查询语句时超时 ..
原因分析: ..
查询超时一般来说首先要从sql语句和数据表的结构上找原因,优化sql语句和为数据库的查询字段建索引是最常用的办法。 对真正的成功者来说,不论他的生存条件如何,都不会自我磨灭
另外,数据库的查询超时设置一般是sqlserver自己维护的(在你没有修改query wait配置前),只有当你的实际查询时间超过估计查询时间的25倍时,才会超时。 ..
而造成超出估计值那么多的原因有两种可能: .
一是估计时间不准确; 。
二是sql语句涉及到大量占用内存的查询(如排序和哈希操作),内存不够,需要排队等待资源造成的。 .
解决办法: .
A.优化语句,创建使用合适的索引; !
B.解决第一个问题的方法,更新要查询表的索引分发统计,保证估计时间的正确性,UPDATE STATISTICS