SQL数据库超时过期问题的解决方案

  如果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 对象的超时设置,再打开该连接。例如:

  

  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数据库连接超时.

时间: 2024-10-29 08:10:39

SQL数据库超时过期问题的解决方案的相关文章

在.NET C#中如何选择输出SQL数据库字段到EXCL中

问题描述 在.NETC#中如何选择输出SQL数据库字段到EXCL中 解决方案 解决方案二:通过设置字段是否可见,再查询可见字段,导出数据到dataset里,再导出到excel里解决方案三:能说详细点吗,或者举个例子,我水平不行.解决方案四:查询出你所要的字段到数据集中,再导入到EXCEL

Java编写一个图书管理系统,要使用JDVC技术访问,带有SQL数据库,请问怎么写

问题描述 Java编写一个图书管理系统,要使用JDVC技术访问,带有SQL数据库,请问怎么写 Java编写一个图书管理系统,要使用JDVC技术访问,带有SQL数据库,请问怎么写 解决方案 http://download.csdn.net/detail/u014029255/8284261 解决方案二: 1.写界面 2.写数据库连接 3.写数据库的增删改查 4.处理细节

数据库-sql server超时已过期

问题描述 sql server超时已过期 SELECT a1.LogCard, a1.LogID, a1.LogName, a1.LogBm, a1.LogTime AS 第一次刷卡时间, a1.clockID AS 门禁1, a2.LogTime AS 第二次刷卡时间, a2.clockID AS 门禁2 FROM LogTable a1 INNER JOIN LogTable a2 ON a1.LogCard = a2.LogCard AND a1.clockID <> a2.clockI

sql数据库被挂马或插入JS木马的解决方案

很多网站可能遭遇到sql数据库被挂马者插入JS木马的经历:mssql的每个varchar.text字段都被自动插入一段js代码,即使删除这段代码,如果没有从源头上解决,几分钟后,js代码就又会自动插入数据库.    这很有可能是程序自动执行的,黑客先从搜索引擎google.百度等搜索存在漏洞的采用asp+mssql设计的网站,然后采用小明子这样的注入扫描工具,扫描整个网站,一旦发现有sql注入的漏洞或者上传漏洞,黑客就通过各种手段,上传自己的大马,如海阳木马:然后,黑客就把这个网站纳入他的肉鸡列

讲解SQL Server数据库被挂马的解决方案

案例:一个网站遭遇入侵,破坏相当严重,SQL数据库被挂马,所有的表里面大部分字段都被多次重复插入挂马代码,查看日志,还好没有涉及到服务器的安全,只是数据库那里出现了很多异常警告而已,网站确实存在漏洞 没有办法,我只得修复数据库,因为他们没有数据库备份,根本就没有办法还原数据库啊,何况连事务日志都没有开启,试着恢复了几次都不成功,恢复数据库没有一点希望,我只得乖乖的帮他们清理挂马代码,不可能手工删除挂马代码,毕竟数据太大了,不可能去直接修改,通过四处搜寻得到了一个勉强有效的解决办法,每个表里面去执

SQL数据库连接超时的原因与解决方法

1.由于数据库设计问题造成SQL数据库新增数据时超时 症状: A. Microsoft OLE DB Provider for SQL Server 错误 '80040e31' [ODBC SQL Server Driver]超时已过期) B.服务器上看CPU.内存占用率很低: C.事件日志中提示: 数据库 '*********' 中文件 '***********' 的自动增长在 453 毫秒后已取消或出现超时.使用 ALTER DATABASE 设置更小的 FILEGROWTH 或设置新的大小

session-aspx单点登录 怎么判断不正常退出,将SQL数据库一字段改成true

问题描述 aspx单点登录 怎么判断不正常退出,将SQL数据库一字段改成true 我做了一个系统,在同一时间,一个帐号只能一个登录,我把数据库帐号表加了一个列,用来判断是否登录,如果没登录,为true,如果登录后,就改为false,然后在登陆界面判断这个列是true还是false,如果是false就弹框,不能进去. 只有用户自己安全退出,才把false改成true 我的帐号使用session传值的. 现在有个麻烦,就是如果直接关掉游览器,那这个列的字段不会自己变成true,怎么办?还有直接断电和

sql语句-sql 数据库问题,如何得到我想要的表达

问题描述 sql 数据库问题,如何得到我想要的表达 现在表单是这样的怎么把它变成下面这样的求大神解答 解决方案 可以把你的问题说清楚一些吗,我没看懂你要表达什么意思 解决方案二: 这很简单啊,直接在sql语句中把所有需要的数据查询出来输出就行 解决方案三: 1.如果是直接用sql语句查询显示的话,可以参考这边 http://blog.csdn.net/smile725775/article/details/6977937 ,但是这个有一个要求就是工序的最大数目是固定的,你能提前知道最多有多少个工

SQL Server 2008远程链接时SQL数据库不成功怎么办

  远程连接SQL Server 2008,服务器端和客户端配置 关键设置: 第一步(SQL2005.SQL2008): 开始-->程序-->Microsoft SQL Server 2008(或2005)-->配置工具-->SQL Server 配置管理器-->SQL Server网络配置-->MSSQLSERVER(这个名称以具体实例名为准) 的协议-->TCP/IP-->右键-->启用 第二步: SQL2005: 开始-->程序-->