连接mysql超时_数据库连接超时的原因及其解决⽅法
1.由于数据库设计问题造成SQL数据库新增数据时超时
症状:
Microsoft OLE DB Provider for SQL Server 错误 '80040e31' ([ODBC SQL Server Driver]超时已过期);
mysql下载odbc失败服务器上看CPU、内存占⽤率很低;
事件⽇志中提⽰: 数据库 '*********' 中⽂件 '***********' 的⾃动增长在 453 毫秒后已取消或出现超时。使⽤ ALTER DATABASE 设置更⼩的FILEGROWTH 或设置新的⼤⼩。
原因:
数据库设置时,[⽂件增长]按百分⽐来增长,当数据库⽂件很⼤时(1G以上),新增操作都会报超时,⽽这时候其实CPU、内存占⽤率都⾮常⾮常的低。
解决⽅法:
把上述的⽂件增长这⾥设置为⼀个更低的百分⽐或者直接指定增加多少兆字节。
2.SQL Server数据库超时设置
修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外⼀台SQL Server的超时设置是 4 秒,⽽查询分析器是 15 秒。
企业管理器中的设置:
在企业管理器中,选择菜单上的"⼯具",再选择"选项";
在弹出的"SQL Server企业管理器属性"窗⼝中,点击"⾼级"选项卡;
在"连接设置"下的"登录超时(秒)"右边的框中输⼊⼀个⽐较⼤的数字,如 30。
查询分析器中的设置:
单击“⼯具”->"选项"->"连接"; 将登录超时设置为⼀个较⼤的数字,连接超时改为0。
3.查询语句时超时
原因分析:
查询超时⼀般来说⾸先要从sql语句和数据表的结构上原因,优化sql语句和为数据库的查询字段建索引是最常⽤的办法。
另外,数据库的查询超时设置⼀般是sqlserver⾃⼰维护的(在你没有修改query wait配置前),只有当你的实际查询时间超过估计查询时间的25倍时,才会超时。
⽽造成超出估计值那么多的原因有两种可能:
估计时间不准确;
sql语句涉及到⼤量占⽤内存的查询(如排序和哈希操作),内存不够,需要排队等待资源造成的。
解决办法:
优化语句,创建\使⽤合适的索引;
解决第⼀个问题的⽅法,更新要查询表的索引分发统计,保证估计时间的正确性,UPDATE STATISTICS 表名;
增加内存
如果想⼿动设置查询超时,可以使⽤以下语句:
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.ConnectionDim rs As ADODB.Recordset. . . cmd1 = txtQuery.TextSet rs = New
ADODB.Recordsetrs.Properties("Command Time Out") = 300'同样以秒为单位,如果设置为 0 表⽰⽆限制rs.Open cmd1,
cnrs.MoveFirst. . .
另外,⼀些硬件及⽹络⽅⾯的原因也可能造成SQL数据库连接超时.
标签:
本站⽂章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原⽂相关链接,尊重他⼈劳动成果
⽂章转载⾃:DIY部落
好⽂不易,⿎励⼀下吧!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。