将不确定变为确定~真的是SqlDataReader引起的超时?

简介:

在进行大数据量读操作时,一般我们会选择SqlDataReader,或者不会使用DataSet,原因就不说了,在我项目中遇到一个很奇怪的问题,当sql执行时候过长时,系统被抛一个超时,链接池已满的提示。

网上的解决方法事实上大分部是针对“connection time out“的,即链接超时,它一般解决方案是:

1 为SQL连接串添加这个:Connect Timeout=10000 //SQL连接超时时间

2 为SQL连接串添加这个:Max Pool Size = 512 //最大连接池

事实上它们解决的是连接超时问题,而有时,你的程序可能是在SQL解释时间比较长,设置上面两个就没有用了,SQL的解释执行由SqlCommand对象去控制

所以,我们正确的做法应该是设置它的超时时间,代码如下:

1  comm.CommandText = sb.ToString();
2   conn.Open();
3   comm.CommandTimeout = 0;
4   SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection);

程序再运行,问题解决,呵呵!

所以,解决问题应该是对正下药才行!

本文转自博客园张占岭(仓储大叔)的博客,原文链接:将不确定变为确定~真的是SqlDataReader引起的超时?,如需转载请自行联系原博主。

目录
相关文章
|
5月前
|
Windows
如何在关闭socket连接的时候跳过TIME_WAIT的等待状态
如何在关闭socket连接的时候跳过TIME_WAIT的等待状态
|
网络协议 应用服务中间件
服务器CLOSE_WAIT请求太多的问题
服务器CLOSE_WAIT请求太多的问题
551 0
|
Go
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
Go channel被关闭时的广播机制,以及遍历未关闭channel时会导致死锁阻塞问题
162 0
窗口置前的几种方法
函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。
|
SQL 缓存 Oracle
Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法
Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法
567 0
Java 技术篇 - 连接oracle数据库执行sql使用close()关闭createStatement()无效无法清除游标缓存问题解决,报“ORA-01000: 超出打开游标的最大数“错误解决方法
|
SQL 数据库 Windows
SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析
原文:SQL Server会话KILL不掉,一直处于KILLED /ROLLBACK状态情形浅析 今天遇到一个很奇怪的情况,发现一个会话异常,这个会话只是在执行一个简单的存储过程,里面使用了链接服务器(Linked Server)查询另外一台服务器数据(存储过程里面没有任何显性事务、UPDATE、D...
2031 0
|
数据采集 网络协议
一次TIME_WAIT和CLOSE_WAIT故障和解决办法
昨天解决了一个curl调用错误导致的服务器异常,具体过程如下: 里头的分析过程有提到,通过查看服务器网络状态检测到服务器有大量的CLOSE_WAIT的状态。   在服务器的日常维护过程中,会经常用到下面的命令:   它会显示例如下面的信息: TIME_WAIT 814CLOSE_WAIT 1FIN_WAIT1 1ESTABLISHED 634SYN_RECV 2LAST_ACK 1 常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。
2694 0