我有一个客户端 - 服务器应用程序,它使用.NET SqlClient数据提供程序连接到sql server - 非常标准的东西。默认情况下,在连接池管理器关闭数据库连接并将其从池中删除之前,连接必须有多长时间空闲?有什么设置可以控制它吗?
连接池在空闲了很长时间后,或者如果池中检测到与服务器的连接已被切断,则会从池中删除连接。
答案 0 :(得分:7)
几年前,下面的答案是情况,但现在它已经改变,所以你可以参考source并写下摘要:)
旧答案
This excellent article告诉我们需要了解的内容,使用反射来揭示连接池的内部工作原理。
从我的理解,'关闭'连接以半随机间隔定期清理。清理过程在每2分钟和3分钟50分钟之间运行,但在关闭之前需要运行两次。连接将正确关闭。因此,关闭'应该正确关闭底层的sql连接,但它可能短至2分钟。在编写时,在进程中创建的第一个连接池的计时器间隔始终为3分10秒,因此您通常会在调用Close()之后的3分10秒到6分20秒之间看到sql连接被关闭。 ADO对象。
显然,这使用了未记录的代码,因此将来可能会发生变化 - 或者甚至可能在撰写该文章后发生了变化。
答案 1 :(得分:0)
请仔细阅读:
部分
“下表列出了有效内容 连接池值的名称 在ConnectionString中。“
似乎符合您的利益。