引起SQL数据库超时的问题分析及解决办法
1.由于数据库设计问题造成SQL数据库新增数据时超时
症状:
Microsoft OLE DB Provider for SQL Server 错误 '80040e31' ([ODBC SQL Server Driver]超时已过期);
服务器上看CPU、内存占用率很低;
事件日志中提示: 数据库 '*********' 中文件 '***********' 的自动增长在 453 毫秒后已取消或出现超时。使用 ALTER DATABASE 设置更小的 FILEGROWTH 或设置新的大小。
原因:
数据库设置时,[文件增长]按百分比来增长,当数据库文件很大时(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 表名;
C.增加内存
如果想手动设置查询超时,可以使用以下语句:
sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
sp_configure 'query wait', 2147483647
GO
RECONFIGURE
GO
4.应用程序连接失败
故障:
在应用程序中我们也会遇到类似的错误信息,例如:
Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'. [Microsoft][ODBC SQL Server Driver]超时已过期.
解决方法:
A.如果遇到连接超时的错误,我们可以在程序中修改 Connection 对象的超时设置,再打开该连接。例如:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSNtest="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase"
Conn. Properties("Connect Timeout") = 15 '以秒为单位
Conn.open DSNtest
%>
B. 如果遇到查询超时的错误,我们可以在程序中修改 Recordset 对象的超时设置,再打开结果集。例如:
Dim cn As New ADODB.Connection
Dim rs As ADODB.Recordset
. . .
cmd1 = txtQuery.Text
Set rs = New ADODB.Recordset
rs.Properties("Command Time Out") = 300
'同样以秒为单位,如果设置为 0 表示无限制
rs.Open cmd1, cn
rs.MoveFirst
. . .
另外,一些硬件及网络方面的原因也可能造成SQL数据库连接超时.
转载于:https://www.cnblogs.com/conquer/archive/2008/04/20/1162332.html
引起SQL数据库超时的问题分析及解决办法相关推荐
- mysql数据库插入数据显示Extracted SQL state class '22' from value '22001'解决办法
Extracted SQL state class '22' from value '22001' 问题描述 最近在完成一个项目时,需要实现在网页从excel导入数据,然后保存到数据库中.在测试阶段时 ...
- mysql数据库连接过多的错误,可能的原因分析及解决办法
mysql数据库连接过多的错误,可能的原因分析及解决办法 来源:网络采集 作者:未知 系统不能连接数据库,关键要看两个数据: 1.数据库系统允许的最大可连接数max_connections.这个参数是 ...
- mysql update语句卡死_oracle执行update语句时卡住问题分析及解决办法
问题 开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果.但是奇怪的是执行其他的select语句却是 ...
- mysql数据库死锁的产生原因及解决办法
该文章为转载,如有侵权请及时联系 这篇文章主要介绍了mysql数据库锁的产生原因及解决办法,需要的朋友可以参考下 数据库和操作系统一样,是一个多用户使用的共享资源.当多个用户并发地存取数据 时,在数据 ...
- 关于mac双系统安装SQL Server卡在starting server的解决办法
关于mac双系统安装SQL Server卡在starting server的解决办法 因为本人有时候会做一些设计的公司,奔着mac系统的稳定性,购置了一台macbook Pro2017年出厂的一款本, ...
- php session_start() 非常慢,PHP session_start()很慢问题分析与解决办法
本文章来给各位同学介绍一下关于PHP session_start()很慢问题分析与解决办法,希望碰到此问题的同学可进入参考. 最近在做东西的时候发现一个问题 有一个接口挂了 ,然后进行测试访问地址的时 ...
- 使用MySQL Workbench导出数据库脚本以及出错时的解决办法
使用MySQL Workbench导出数据库脚本以及出错时的解决办法 正常做法 打开workbench,选择左上角的菜单栏,选择Server->Data 之后出现如下界面 一般情况下,这样就导出 ...
- win8计算机usb无法识别usb设备,Win8.1无法识别USB设备原因分析及解决办法(适合Win8)...
Win8.1无法识别USB设备原因分析及解决办法 同事孩子要上大学,购买了预装Win8.1系统的笔记本,想要使用读卡器传照片,插上USB读卡器后,任务栏右下角显示无法识别的USB设备,这怎么可能呢?W ...
- php 修改css 不生效,HTML外部引用CSS文件不生效原因分析及解决办法
本文主要给大家介绍html外部引用css文件不生效的原因分析及解决办法,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧 作为一个前端小白,鼓捣了几天前端..今天突然发现我深信不疑的东西, ...
最新文章
- CAP只能三选二,可以选CA吗?
- MTK Android 编译命令
- 1066 Root of AVL Tree (25 分)【难 / 知识点: 平衡树 未完成】
- 切糕(bzoj 3144)
- matlab for 取数组,for循环中的MATLAB和单元格数组处理
- 怎么查看linux日志里请求量最高的url访问最多的_实用的Linux高级命令,开发运维都要懂!...
- Angular消息通知组件ngx-notification
- Python数据可视化的四种简易方法
- python从入门到放弃-Python数据分析从入门到放弃(十五)爬虫(番外)基金选取实例...
- cocos2dx 字体外发光_Cocos2d-x 3.x开发塔防游戏《王国保卫战》02:地图(一)
- PHP 获取微视无水印源地址_PHP快速实现解析无水印播放地址URL——快手篇
- PSP伊苏VS空之轨迹 游戏ISO文件和完美通关全要素存档
- 一小时搞定 简单VBA编程 Excel宏编程快速扫盲
- 登录英雄联盟显示正在连接服务器,windows10系统登录英雄联盟出现连接不上服务器如何解决...
- C#实现Omron欧姆龙PLC的Fins Tcp协议[转]
- 电影爱好者福利,一些电影网站汇总
- 深圳房价链家数据分析
- OpenStack 快速进阶教程
- 阿里云OSS跨域设置
- SCRDet:Towards More Robust Detection for Small, Cluttered and Rotated Objects