随着数据库数据的不断增大,查询时间也随之增长。而客户端与数据库连接时间以及命令的执行时间都是有限的.默认为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. Synchronized总结

    一.synchronized加锁原理 synchronized可以保证方法或者代码块在运行时,同一时刻只有一个线程可以进入到临界区,同时它还可以保证共享变量的内存可见性. Java中每一个对象都可以作 ...

  2. Ingress介绍与安装配置

    在 Kubernetes 集群中,Ingress是授权入站连接到达集群服务的规则集合,为您提供七层负载均衡能力.您可以给 Ingress 配置提供外部可访问的 URL.负载均衡.SSL.基于名称的虚拟 ...

  3. 基于WCF的支持跨局域网可断点续传的大文件传输服务实现

    题外话:这个系列的文章记录了本人最近写的一个小工程,主要包含了两个功能,一是对文件的断点续传的功能,二是基于WCF的一对多文件主动发送的功能,顺便这也是我自己在WCF学习路上的一个小成果吧. 在网上找 ...

  4. [转] ESXI6.5 误将硬盘阵列卡配置为passthru直通模式后, 找不到硬盘的问题

    There is no easy way to do it, it seems. So I wanted to say that I couldn't afford to do an upgrade ...

  5. 第一次oo博客作业--表达式求导

    (1)说实话我这部分真的不知道写些什么,因为我只有第三次作业写了两个类,前两次都是一个类,一个类的好处可能也就是写起来比较方便(不用抽象什么共性了,直接c语言莽过去),缺点很多,架构不清晰,可读性不高 ...

  6. C#使用Mutex实现单例应用程序

    不少应用程序有单一实例的需求,也就是同时只能开启一个实例(一般也就是一个进程). 实现的方式可能有判断进程名字,使用特殊文件等等,但是最靠谱的方式还是使用系统提供的 Mutex 工具. Mutex是互 ...

  7. java表达式中运算符优先级

    运算符优先级:运算符*和/(以及%)的优先级高于+和-(优先级越高,越早运算) 在逻辑运算符中,!拥有最高优先级,之后是&&,接下来是||. 一般来说,相同优先级的运算符的运算顺序是从 ...

  8. 我们一起踩过的坑----react(antd)(一)

    1.}]          && ){             ){ ){ ||){ ){ );); , }; }); }, beforeUpload: (file) => { ...

  9. 【1天】黑马程序员27天视频学习笔记【Day02】

    02.01常量的概述和使用 * A:什么是常量    * 在程序执行的过程中其值不可以发生改变 * B:Java中常量的分类    * 字面值常量    * 自定义常量(面向对象部分讲) * C:字面 ...

  10. Spring常用注解总结(3)

    @Configuration 表示该类为"配置类",可替换xml配置文件.与@Component不同的是,@Configuration会生成CGLIB代理class. @Targe ...