解决SQL查询总是 超时已过期_第1页
解决SQL查询总是 超时已过期_第2页
解决SQL查询总是 超时已过期_第3页
解决SQL查询总是 超时已过期_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

解决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 秒。企业管理器中的设置: 在企业管理器中,选择菜单上的工具,再选择选项; 在弹出的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 GO4.应用程序连接失败故障: 在应用程序中我们也会遇到类似的错误信息,例如: Microsoft OLE DB Provider for ODBC Drivers 错误 80004005. MicrosoftODBC SQL Server Driver超时已过期.解决方法: A.如果遇到连接超时的错误,我们可以在程序中修改 Connection 对象的超时设置,再打开该连接。例如: %Set Conn = Server.CreateObject(ADODB.Connection)DSNtest=DRIVER=SQL Server;SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabaseConn. 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数据库连接超时.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. MicrosoftODBC SQL Server Driver超时已过期. 解决方法: A.如果遇到连接超时的错误,我们可以在程序中修改 Connection 对象的超时设置,再打开该连接。例如:%Set Conn = Server.CreateObject(ADODB.Connection)DSNtest=DRIVER=SQL Server;SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabaseConn. Properties(Connect Timeout) = 15 以秒为单位Conn.open DSNtest% B.如果遇到查询超时的错误,我们可以在程序中修改 Recordset 对象的超时设置,再打开结果集。例如:Dim cn As New ADODB.ConnectionDim rs As ADODB.Recordset. . .c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论