用ASP.NET开发的一个BS系统运行过程中报"超时时间已到……达到了最大池大小。" 怎么解决??

我用ASP.NET开发的个BS系统,运行过程中有时候在open()的位置报"超时时间已到……达到了最大池大小。"而我在每次访问数据库后都关闭了的。。郁闷,这怎么解决啊?是... 我用ASP.NET开发的个BS系统,运行过程中有时候在open()的位置报"超时时间已到……达到了最大池大小。" 而我在每次访问数据库后都关闭了的。。郁闷,这怎么解决啊? 是是页面加载时的查询太多哦? 展开
 我来答
匿名用户
2013-08-27
展开全部
问题分析:
问题的原因是与数据库的连接没有显示关闭,而等系统自动回收是要时间的.

解决方案:

1.在代码里面,把未关闭的连接关闭
2.扩大共享池,方法如下:
2.1修改连接池的连接生存期
因为默认值是60秒,即连接从应用程序被释放后可以在池中保存的时间。
  如果是ODBC的话
  则可以在ODBC Data Source Administrator中手动更改,该程序位于“Start”菜单中的“Programs”->"Adminstrative Tools"(中文名:管理工具)下,或从"Control Panel"(中文名:控制面板)中打开“ODBC Data Source Administrator”(ODBC数据源管理器),再选择“Connection Pooling”(连接池)选项卡,双击驱动程序中的“SQL Server”,选择“Pool Connetions to this drive”(使用池连接该驱动程序),把下面的时间60秒改的大一点,例如120。
  如果是SqlConnection的共享连接
  则为ConnectionString属性Connection Lifetime数值名称指定一个值,该值默认情况下是0,表示连接永远不会从池中被自动移走。如果指定一个不同的值,那么一旦连接被返回到池中,该值将和连接的创建时间及当前时间进行比较。如果生存期超过了Connection Lifetime的值,那么连接将从池中被移走。

2.2改变连接池的大小
在连接字符串的后面加上以下代码:Enlist=true;Pooling=true;Max Pool Size=300;Min Pool Size=0;Connection Lifetime=300;user id=sa;packet size=1000
-----------------------------------------------------------------

以上是网络中找的,其实出现这个问题不太应该,因为open后必须要close。
如果你认为open后都close的话,你查查是不是是不是用了try catch
而用try catch 的话一定把把 close放在 finally里,即 try{open} catch{} finally{close}

另外真的不建议你连数据库的时候用什么适配器,command语句,最后在fill这种。
有个类叫 sqlhelper ,微软出的,你去搜下,用法很简单,连接数据库直接调用里面的方法即可。
就一般就不会出现你说的问题。
匿名用户
2013-08-27
展开全部
首先年的连接有打开 就要有关闭
再者 可能是你的IIS连接池的问题.
连接池有上限的..重新开辟一个连接池
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-27
展开全部
请问你装的什么系统。。把地址池停止再启动
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-27
展开全部
肯定有的链接没有关!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式