[英]SQL Server JDBC driver can't detect lost connection quickly
我正在使用JDBC驱动程序sqlserver-jdbc-4.0.jar
连接到SQL Server。 我创建了一个连接并成功使用它。
然后我关闭了SQL Server机器的网络接口。 当我运行下一个命令时,我的应用程序一侧的JDBC驱动程序需要大约15分钟才能理解连接丢失。 我尝试了几件事:
LoginTimeout=5, LockTimeout=5, QueryTimeout=5
(5秒) Statement.setQueryTimeout()
将超时设置为5秒 Connection.isValid()
,超时5秒 - 它也停留了15分钟 另一个可能的选项 - Connection.setNetworkTimeout()
但它不是由SQL Server驱动程序实现的。 我也无法访问JDBC驱动程序使用的套接字来设置TCP Keepalive。
如果我关闭连接然后再次打开它,它会立即知道SQL Server实例无法访问。
如何在几秒钟而不是15分钟内克服我的问题并检测丢失的连接?
Microsoft MSSQL-JDBC现在是开源的。 最近MSSQL-JDBC团队实现了sockettimeout和querytimeout 。 这肯定会解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.