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