日期:2014-05-17  浏览次数:20956 次

System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用
System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

我网站放在服务器上 出现的上面的报错 网上查看资料说 数据库连接没有关闭.

但是我有很多页面 连接对象一般都没有关闭 有没有一次性解决的办法?

------解决方案--------------------
数据库里操作类规范
using
优化查询语句
public class SqlDbHelper
{
private string connectionString;
public string ConnectionString
{
set { connectionString = value; }
}
public SqlDbHelper()
: this(ConfigurationManager.ConnectionStrings["Conn"].ConnectionString)
{

}
}
------解决方案--------------------

解决方法(*):WEB.config 里面:在数据库连接加 Max Pool Size = 512;server=local;uid=;pwd=;database=2004;Max Pool Size = 512;">一劳永逸。


估计是连接(Connection)对象没有Close。倒是不必Dispose,而DataReader用完后应该关闭,但不关闭也没问题,只是不关闭的话此连接对象就一直不能用,只要你最终关闭了连接对象就不会出问题。


参考:http://hi.baidu.com/cy594/blog/item/47b3b901517ad00b728da540.html/cmtid/c3c51bd56d9d8eca50da4b57
------解决方案--------------------
不要使用,SQL语句在查询分析器执行看执行计划

------解决方案--------------------
这个没有办法,你在多个页面使用,每个地方都没有关闭,只能在每个地方人工关闭,研究Max Pool Size什么的是毫无意义的,无论你设置多大,总有用完的时候,况且,数据库也不支持这么大的连接。

现在只能看你原来的代码是怎么写的,看看是否能够在你的database里面做一些处理。
------解决方案--------------------
就是关闭DataReader我也碰到过这种情况