首页 > 解决方案 > ADO.NET 后台池验证

问题描述

在 Java 中,像 JBoss EAP 这样的应用程序服务器可以选择定期验证数据库池中的连接(https://access.redhat.com/documentation/en-us/red_hat_jboss_enterprise_application_platform/6.4/html/administration_and_configuration_guide/sect-database_connection_validation)。这对于删除过时的连接非常有用。

我现在正在查看一个 ADO.NET 应用程序,我想知道是否有任何类似的功能可以与 Microsoft SQL Server 一起使用?

标签: ado.net

解决方案


我最终找到了 redgate 的这篇文章,它描述了从池中获取连接时进行的一些验证:

如果由于路由器决定不再转发您的数据包并且不再像您这样的其他路由器而导致连接中断,那么除非您尝试发送一些数据并且没有得到响应,否则无法知道这一点。

如果您创建了一个连接并创建了一个连接池,并且连接被放入池中并且未被使用,那么它们在那里的时间越长,发生坏事的可能性就越大。

当你去使用一个连接时,没有什么可以警告你路由器已经停止转发你的数据包,直到你去使用它;所以直到你使用它,你才知道有问题。

这是第一个 .Net 4 可靠性更新中修复的连接池问题(请参阅问题 14,其中含糊地描述了这一点),具有称为“连接池弹性”的功能。更新意味着当一个连接即将从池中取出时,它会检查 TCP 有效性,并且只有在它处于良好状态时才返回。


推荐阅读