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

DannyHau 2015-05-05 01:52:37
ASP.NET
错误信息:
超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。

查看数据库连接数有100条,为什么就达到最大了呢?

在web.config中这样设置没有效果额。

<appSettings>
<add key="data" value="Data Source=DANNY-PC\\SQLEXPRESS;Initial Catalog=test;Integrated Security=True;pooling=true;min pool size=5;max pool size=512;connect timeout = 20; "/>
</appSettings>
...全文
503 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-05-05
  • 打赏
  • 举报
回复
如果都是手动关闭,你需要写进finally里,并且还要再加try 否则如果你写进try里,那么出错了就直接进入catch,就不执行close了 而如果open的时候就出错,你在finally里不判断连接状态就close,还是会再出错 最好就是用using,就不用考虑到底该什么时候close了,不管出错不出错,.net类库会负责帮你关闭
DannyHau 2015-05-05
  • 打赏
  • 举报
回复
通过trace sql终于找到未关闭connection的函数。用的Datatable还是用手动关闭,手动关闭之后就okay了。谢谢各位
DannyHau 2015-05-05
  • 打赏
  • 举报
回复
引用 6 楼 Z65443344 的回复:
使用using关键字,不要用try,catch,finally,那样很可能出错的时候并不能及时关闭 此外,访问数据库的函数应该返回dataset,datatable等数据集对象,而不要返回datareader,不要把数据库连接对象抛给UI层去处理
用的是datatable,貌似都是用手动关闭的。
於黾 2015-05-05
  • 打赏
  • 举报
回复
原则就是,哪里连接,哪里关闭 而且应该在单独的类里(分层的话就在DAL层里)处理,而不要到处都调用数据库访问对象 你100个地方连接数据库,99个地方都关闭了,只1个地方没关闭,也会造成连接池满了的情况
於黾 2015-05-05
  • 打赏
  • 举报
回复
使用using关键字,不要用try,catch,finally,那样很可能出错的时候并不能及时关闭 此外,访问数据库的函数应该返回dataset,datatable等数据集对象,而不要返回datareader,不要把数据库连接对象抛给UI层去处理
DannyHau 2015-05-05
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
出现这种问题一般都是你的链接只开不关
你想说的是我没有close connection么?网上说datareader要手动关闭,但是我用的是dataAdapter,并且都有close了。
DannyHau 2015-05-05
  • 打赏
  • 举报
回复
引用 1 楼 zhanglong_longlong 的回复:
有正常close()掉吗?
都有close,不知道为什么
於黾 2015-05-05
  • 打赏
  • 举报
回复
同上, 跟连接池大小没有啥关系 你设置成10000,只开不关,还是早晚有满的时候
  • 打赏
  • 举报
回复
出现这种问题一般都是你的链接只开不关
【Help】 2015-05-05
  • 打赏
  • 举报
回复
有正常close()掉吗?

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧