日期:2014-05-18  浏览次数:20487 次

急,.net错误,请帮忙(估计是超时错误)
在服务器上运行时间长了,就会出现,如下情况:
timeout expired.the timeout period to obtaining a connection frm the pool.this have occurred all pooled connectionw were in use and max pool size wan reached.

程序如下:
string strSQL="select sum(usercount) as count1 from usercount";
  SqlCommand myComm=new SqlCommand(strSQL ,objConnection);
myComm.CommandTimeout=800000;
objConnection.Open();
数据连接那一块为 <add key="ConnectString" value="Data Source=fuwu;User Id=aa;Password=;DataBase=PM;Connect Timeout=90" />  
 请大家帮忙解决,谢谢!

我用的是VS2003+SQL2000


------解决方案--------------------
你没关闭连接 可能是连接池的问题 你加上objConnection.close()看看
------解决方案--------------------
这个错误是你代码有问题造成的。


默认的情况下 SqlConnection 会启用连接池,连接数为 100 个

当 SqlConnection.Open() 时会从连接池中取出连接实例,当 SqlConnection.Close() 时会把连接实例返回到连接池中。上述错误是因为你显式的打开连接,却没有显示的关闭连接造成的(不关闭连接不会返回到连接池)。


解决办法:
1)最简单的是在构造 ConnectionString 字符串中关闭连接池(详见 MSDN)。
2)检查所有使用到 SqlConnection 的代码处,是否显示的关闭了连接。
------解决方案--------------------
PS:是不是数据库连接池溢出阿? 

不是。所谓的连接池、线程池之类的。其实就是完成任务后的连接(线程)不销毁而是挂起,等待下一次任务。

一般连接池都有一个最大上限,超过池限制会返回 null 或 throw 异常。