Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

2023-11-12

今天碰到了一个查询异常问题,上网查了一下,感谢原创和译者

如果你使用的数据库连接类是 the Data Access Application Blocks "SqlHelper" 或者 SqlClient Class , 你在执行一个很费时的SQL 操作时候,可能就会碰到下面的超时异常。

---------------------------

---------------------------
Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
---------------------------
OK  
---------------------------

你会说,我在连接字符串中已经 设置了 Connect Timeout=80000 ,并且数据库中超时连接也是设置的值是一个很大的值。为啥到了30秒,仍然超时了呢??

这是因为:
你的设置并没有问题,是你混淆了  SqlCommand.CommandTimeout  和 SqlConnection.ConnectionTimeout 这两个的区别了。
你的连接字符串中的超时只是设置的 SqlConnection.ConnectionTimeout 的值,而不是设置的 SqlCommand.CommandTimeout 的值。
SqlHelper 中并没有 SqlCommand.CommandTimeout 的相关设置。需要你自己设置。

下面是两个的比较:

SqlCommand.CommandTimeout
获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
等待命令执行的时间(以秒为单位)。默认为 30 秒。


SqlConnection.ConnectionTimeout
获取在尝试建立连接时终止尝试并生成错误之前所等待的时间。
等待连接打开的时间(以秒为单位)。默认值为 15 秒。

一些更详细的对这个问题的描述看:
http://www.eggheadcafe.com/PrintSearchContent.asp?LINKID=357

这个问题可以算是 SqlHelper 设计的时候,一个考虑不周的地方吧。
SqlCommand.CommandTimeout 的默认值是30,对于我写的大多数程序来说,这个值足够了。所以一直都没有发现SqlHelper的这个问题。今天在查本地一台比较差的机子上生成一个超长帖子(近4000个回复)无响应的问题时候,才发现SQLHelper 存在的这个问题。

 

把command的Timeout属性设置一下就ok了!

  /**/ /// <summary>
    
/// 执行查询语句,返回DataTable
    
/// </summary>
    
/// <param name="SQLString">查询语句</param>
    
/// <param name="commTime">设置查询Timeout</param>
    
/// <returns>用于复杂查询</returns>

     public   static  DataTable GetDataTable( string  SQLString, int  commTime)
    
... {
        
string connectionString = System.Configuration.ConfigurationManager.AppSettings["connectionString"];
        
using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection(connectionString))
        
...{
            DataTable dt 
= new DataTable();
            
try
            
...{
                connection.Open();
                System.Data.SqlClient.SqlDataAdapter da 
= new System.Data.SqlClient.SqlDataAdapter();
                System.Data.SqlClient.SqlCommand comm 
= new System.Data.SqlClient.SqlCommand(SQLString, connection);
                comm.CommandTimeout 
= commTime;
                da.SelectCommand 
= comm;
                da.Fill(dt);
            }

            
catch (System.Data.SqlClient.SqlException ex)
            
...{
                
throw new Exception(ex.Message);
            }

            
return dt;
        }

    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 的相关文章

随机推荐

  • 三极管工作原理分析,精辟、透彻,看后你就懂

    随着科学技的发展 电子技术的应用几乎渗透到了人们生产生活的方方面面 晶体三极管作为电子技术中一个最为基本的常用器件 其原理对于学习电子技术的人自然应该是一个重点 三极管原理的关键是要说明以下三点 1 集电结为何会发生反偏导通并产生Ic 这看
  • Topic 6 SCI 文章之计数变量泊松回归

    这期继续说说统计这些事 泊松分布大家可能熟悉些 但是用它来做模型还是需要细细品味一下 泊松回归 也被称为对数线性模型 当结果变量是一个计数 即数值型 但不像连续变量的范围那么大 时 使用泊松回归 研究中统计变量的例子包括一个人有多少次心脏病
  • 程序员写100万行代码是什么感觉

    今天在社群上闲逛 突然发现一个十分有趣的帖子 写了100W行的代码是啥感觉 看完之后就头皮一阵发麻 让我写一万行的代码 are you kidding me 黑人问号脸 我估计写到20万的时候就会突然有个疑问 咦 我的头发呢 A同学 我写两
  • 期货开户市场是一面镜子

    期货市场是一面镜子 照出真实的你 成功者 总需要用失败者来定义 市场中1 的更新和迭代 使进入合理的市场循环状态 有人说期货市场是优秀人才的坟墓 究其根本原因 即使是其他领域的小有成就的精英 在期货市场中也很难完成超越 市场折射出人性的贪婪
  • 如何在matlab中打开一个.dat文件,并载入数据

    方法一 fscanf函数 fid fopen data dat r 打开数据文件 x fscanf fid g 读取文件数据 得到的x数据为列向量 要注意的是 data dat必须是在你操作的目录下 方法二 load函数 load xxx
  • RocketMQ知识

    1 为什么使用MQ MQ在项目中的作用 MQ具有解耦 异步 削峰填谷的功能 在本人项目中主要用于单向报文 交易信息登记的异步操作 2 RocketMQ由哪些角色组成 它们分别由什么作用 NameServer 作为服务协调组件 类似于zook
  • 做项目时候活动详情页面遇到的思考总结1。

    首先这个整体在活动详情这个页面显示 这个页面是这个项目得亮点也是难点 先是pageleft拖拽组件 获得组件数据component改变拖拽状态dragactive 然后在预览页面pagereview中添加到预览位置 先获得拖动鼠标距离预览区
  • 诚之和:怎么在Django中Pyecharts生成图表

    在数据可视化中 我们可以使用一些类似pyecharts来生成图表 但如果我们想在网页中进行数据可视化 还需要Django的支持 那么怎么在Django中Pyecharts生成图表呢 接下来的这篇文章带你了解 因为pyecharts是支持py
  • Flask(数据库操作 十一)

    查询 查询全部 users User query all 查询第一个 users User query first 通过主键获取 users User query get 1 多个主键 users User query get 1 5 us
  • windows下安装虚拟机+ Ubuntu的详细过程

    不是每一个程序员都必须玩过linux 只是博主觉得现在的很多服务器都是linux系统的 而自己属于那种前端也搞 后台也搞 对框架搭建也感兴趣 但是很多生产上的框架和工具都是安装在服务器上的 而且有不少大公司都要求熟悉在linux上开发 因此
  • Spring学习--DI依赖注入

    依赖与依赖注入 传统应用程序设计中所说的依赖一般指 类之间的关系 那先让我们复习一下类之间的关系 泛化 表示类与类之间的继承关系 接口与接口之间的继承关系 实现 表示类对接口的实现 依赖 当类与类之间有使用关系时就属于依赖关系 不同于关联关
  • osgEarth的Rex引擎原理分析(一二七)rex影像层属性及其设置

    目标 一二六 中问题213
  • C语言之进制转换

    文章目录 一 基础知识 1 C语言中的进制 2 汇编中的进制 3 常见进制的基数 4 不同进制的输出方式 二 十进制转为其它进制 三 任意进制转为十进制 四 二进制与十六进制的互相转换 1 二进制转为十六进制 2 十六进制转为二进制 五 二
  • SaltStack Installation(一)

    author skate time 2014 11 11 SaltStack Installation Installation from EREL 1 If EPEL is not enabled on your system you c
  • MFC窗体中打开第三方exe程序到指定区域

    流程如下 1 CreateProcess创建外部EXE进程 2 获取指定区域的坐标 3 查找进程的主窗口 4 将外部程序移到指定区域 5 调用ShowWindow显示窗口 主程序如下 handle StartProcess D progra
  • C# WINFORM嵌入CHROME浏览器(CEFSHARP)

    在开发过程中经常需要在程序中嵌入浏览器控件用于访问网页 Visual Studio中自带了一个webbrowser控件 但无奈这个控件是调用用户电脑上的IE浏览器来实现的 如果用户装的是低版本IE 比如Win7的IE8 很多新的网页标准就无
  • express中如何引入页面中的路径

    想用nodejs express bootstrap做一个rainbow的页面小程序 但是在写的过程中 发现在index ejs中引入的静态css和js都无法找到路径 而我使用的WebStorm是在页面中直接可以找到引用的路径的 在浏览器中
  • 北大邹磊:图数据库中的子图匹配算法

    导读 本次讲座从图数据库中的核心查询算子 子图匹配入题 介绍了图数据库的基本概念 子图匹配的算法 以及在图数据库环境下的子图匹配查询优化等内容 具体包括下面三个方面 什么是图数据库 子图匹配查询及其优化方法 我们的工作 01 什么是图数据库
  • SQL AND & OR 运算符

    博客主页 开心档博客主页 欢迎关注 点赞 收藏 留言 本文由开心档原创 51CTO首发时间 2022年12月12日 这世界很喧嚣 做自己就好 作者水平很有限 如果发现错误 一定要及时告知作者哦 感谢感谢 本文介绍 AND OR 运算符用于基
  • Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

    今天碰到了一个查询异常问题 上网查了一下 感谢原创和译者 如果你使用的数据库连接类是 the Data Access Application Blocks SqlHelper 或者 SqlClient Class 你在执行一个很费时的SQL