随着数据库数据的不断增大,查询时间也随之增长。而客户端与数据库连接时间以及命令的执行时间都是有限的.默认为30s。
所以在查询数据的时候,程序会出现 “超时时间已到。在操作完成之前超时时间已过或服务器未响应” 异常。

经检查后发现,这是因为页面在读取数据库中的数据时耗时太长,超过了默认的30秒。所以报出了以上错误,解决该问题的方法是:
一,优化sql语句,提高查询速度
二,延长sql超时的时间设置

最好的方法当然是第一种了,这才是治本的方法。但sql优化可不是一件简单的活,具体的环境有不同的方法。本章主要看一下如何通过第二种方法来解决问题。

1,首先设置sql的执行超时时间。
如果我们的sql是直接使用SqlCommand对象来执行的,那么可以设置SqlCommand的CommandTimeout属性的值。
比如:

using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
cmd.CommandTimeout=
}

这样我们就设置了cmd的超时间时间是180秒。
注意:SqlCommand.CommandTimeout属性的单位为秒,默认值是30。

如果我们的sql是利用SqlDataAdapter对象来获取数据集合,那么我们还可以分别通过以下方法设置SqlCommand的超时时间。

using (SqlConnection connection = GetConnection())
{
…… SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand.CommandTimeout = ;//设置查询sql的超时时间
sqlDA.InsertCommand.CommandTimeout = ;//设置插入sql的超时时间
sqlDA.UpdateCommand.CommandTimeout = ;//设置修改sql的超时时间
sqlDA.DeleteCommand.CommandTimeout = ;//设置删除sql的超时时间 ……
}

也许大家在有些网站上看到以下解决方法
1),在数据库的连接字符串中添加超时时间设置,如下:
SqlConnection con = new SqlConnection'server=.;database=myDB;uid=sa;pwd=password;Connect Timeout=180'
但我有测试过,无效,也有可能是我的测试方法错误吧!!!

2),设置SqlConnection对象的超时时间。
该方法是肯定行不通了,因为SqlConnection的ConnectionTimeout属性根本就是个只读属性,不允许设置值。从它的定义就可以看出来了,定义如下:

//
//摘要:
//获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
//
//返回结果:
//等待连接打开的时间(以秒为单位)。默认值为 15 秒。
//
// 异常:
//System.ArgumentException:
//所设置的值小于 0。
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[ResDescription("SqlConnection_ConnectionTimeout")]
public override int ConnectionTimeout { get; }

2,设置asp.net请求的超时时间。
在上面的设置中我们有处理了sql的超时时间,但可能你的设置还是无效。这是为什么呢?因为你还没有设置asp.net请求的超时时间。
要如何设置asp.net请求的超时时间呢?修改web.config的httpRunTime节即可,示例如下:

<system.web>
<httpRuntime executionTimeout="" />
</system.web>

其中httpRuntime属性与executionTimeout属性的意思分别如下:
httpRuntime:配置 ASP.NET HTTP 运行时设置,以确定如何处理对 ASP.NET 应用程序的请求。
executionTimeout:设置asp.net关闭前允许发生的上载秒数

设置完这两步,我们的问题才算的真正的解决了。

[C#.net]SqlDataAdapter 执行超时已过期 完成操作之前已超时或服务器未响应的更多相关文章

  1. DbCommand :执行超时已过期。完成操作之前已超时或服务器未响应。

    问题:“Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应.”的解决方法 在一个链接数据库的时候,老是出现超时的错误:执行超时已过期.完成操作之前已超时或服务器未响应. 就是给这个链接 ...

  2. c#执行插入sql 时,报错:异常信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应

    问题:c#执行插入sql 时,报错:异常信息:超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决: SqlCommand cmd = new SqlCommand(); cmd.Comman ...

  3. timeout Timeout时间已到.在操作完成之前超时时间已过或服务器未响应

    Timeout时间已到.在操作完成之前超时时间已过或服务器未响应 问题 在使用asp.net开发的应用程序查询数据的时候,遇到页面请求时间过长且返回"Timeout时间已到.在操作完成之间超 ...

  4. (摘)timeout Timeout时间已到.在操作完成之前超时时间已过或服务器未响应的几种情况

    Timeout时间已到.在操作完成之前超时时间已过或服务器未响应 问题 在使用asp.net开发的应用程序查询数据的时候,遇到页面请求时间过长且返回"Timeout时间已到.在操作完成之间超 ...

  5. Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。

    近来遇到这样一个错误:Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应.错误截图如下: 错误原因分析:产生错误时我执行的操作需要的执行时间比较长.我测试了一下,那个操作用到的存储过程 ...

  6. WebForm+Web.config: 超时时间已到。在操作完成之前超时时间已过或服务器未响应。

    ylbtech-Error-WebForm+Web.config: 超时时间已到.在操作完成之前超时时间已过或服务器未响应. 超时时间已到.在操作完成之前超时时间已过或服务器未响应. 1.A,错误代码 ...

  7. sqlserver Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应

      随着数据库数据的不断增大,查询时间也随之增长.今天在之前一个项目中执行数据库查询超过30秒就报“Timeout 时间已到.在操作完成之前超时时间已过或服务器未响应.”了,网上找了些文章,是在.co ...

  8. 超时时间已到。在操作完成之前超时时间已过或服务器未响应。 (.Net SqlClient Data Provider)

    超时时间已到.在操作完成之前超时时间已过或服务器未响应. (.Net SqlClient Data Provider) 在做一个小东西的时候出现了这个问题,就是使用VS调试几次项目后,使用SQL Se ...

  9. MSSQL2005:“超时时间已到。在操作完成之前超时时间已过或服务器未响应”

    1.今天在整合项目中有这样一个需求,就是要改变以存在表字段的文本的大小,如把char(15)改成varchar(50). 2.此时以存在表已有1885742条数据,在直接下面进行调用 ALTER TA ...

随机推荐

  1. [leetcode]224. Basic Calculator

    Implement a basic calculator to evaluate a simple expression string. The expression string may conta ...

  2. wcf_first

    WCF包括3部分:client(需要连接到哪里,需要调用什么),service(宿主,及其消息的公开,地址的公开),wcf服务库(提供契约名称,及其怎么干) 步骤: 1.新建wcf库,其中提供一个契约 ...

  3. Redis的Errorlog或者启动日志(错误日志)的配置

    Errorlog或者是运行日志是任何一个软件的运行中异常诊断必看的文件之一,折腾Redis的过程中以为有默认的错误日志(或启动日志),不过一直没有发现类似的日志文件,在看了默认的配置文件之后,发现Re ...

  4. linux 服务管理

    服务的分类 查看已安装的服务 RPM包安装的服务 chkconfig --list #查看服务自启动状态,可以看到所有rpm包安装的服务 ps aux #查看已启动的服务 源码包安装的服务 查看服务安 ...

  5. StreamReader和StreamWriter说明

    StreamReader/StreamWriter操作的是字符数据(char),而FileStream操作的是字节数据(byte) FileStream与StreamXXXX类的默认编码都是UTF8, ...

  6. fopen特殊模式r+, w+, a+辨析

    fopen模式分两大类,即 TEXT模式:r, w, a, r+, w+, a+ BIN模式:rb, wb, ab, r+b, w+b, a+b 模式 读指针初始位置 写指针初始位置 模式用途 详细说 ...

  7. 区间修改区间求和cdq分治

    https://www.luogu.org/problemnew/show/P3372 #include<bits/stdc++.h> #define fi first #define s ...

  8. PS 知识整理

    Ctrl+J键复制背景图层. ps怎样只让截取的一部分图旋转 https://jingyan.baidu.com/article/d45ad14877fc6e69542b8079.html 按Ctrl ...

  9. parallel Stream 学习

    首先,我们需要了解下ForkJoinPool.ForkJoin框架是从jdk7中新特性,它同ThreadPoolExecutor一样,也实现了Executor和ExecutorService接口.它使 ...

  10. Python学习—基础篇之基本数据类型(二)

    Python中重要的数据结构 1.列表 2.元组 3.字典 4.集合 列表 1.创建列表 # 方式一 name = [] print(type(name)) # 执行结果 >>> & ...