在连接池关闭之前,sql server连接必须闲置多长时间?

时间:2009-07-16 10:24:33

标签: sql-server connection-pooling

我有一个客户端 - 服务器应用程序,它使用.NET SqlClient数据提供程序连接到sql server - 非常标准的东西。默认情况下,在连接池管理器关闭数据库连接并将其从池中删除之前,连接必须有多长时间空闲?有什么设置可以控制它吗?

This MSDN document只说

  

连接池在空闲了很长时间后,或者如果池中检测到与服务器的连接已被切断,则会从池中删除连接。

2 个答案:

答案 0 :(得分:7)

几年前,下面的答案是情况,但现在它已经改变,所以你可以参考source并写下摘要:)


旧答案

This excellent article告诉我们需要了解的内容,使用反射来揭示连接池的内部工作原理。

从我的理解,'关闭'连接以半随机间隔定期清理。清理过程在每2分钟和3分钟50分钟之间运行,但在关闭之前需要运行两次。连接将正确关闭。因此,关闭'应该正确关闭底层的sql连接,但它可能短至2分钟。在编写时,在进程中创建的第一个连接池的计时器间隔始终为3分10秒,因此您通常会在调用Close()之后的3分10秒到6分20秒之间看到sql连接被关闭。 ADO对象。

显然,这使用了未记录的代码,因此将来可能会发生变化 - 或者甚至可能在撰写该文章后发生了变化。

答案 1 :(得分:0)

请仔细阅读:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28VS.80%29.aspx

部分

  

“下表列出了有效内容   连接池值的名称   在ConnectionString中。“

似乎符合您的利益。