3
我正在使用JDBC驱动程序sqlserver-jdbc-4.0.jar
连接到SQL Server。我创建了一个连接并成功使用它。SQL Server JDBC驱动程序无法快速检测到丢失的连接
然后我关闭了SQL Server机器的网络接口。当我运行下一个命令时,应用程序侧的JDBC驱动程序需要大约15分钟才能了解连接丢失。我试过几件事情:
- 配置的JDBC驱动程序属性
LoginTimeout=5, LockTimeout=5, QueryTimeout=5
(5秒) - 称为
Statement.setQueryTimeout()
设置超时时间为5秒 - 叫
Connection.isValid()
,拥有5秒超时 - 这还停留15分钟
另一种可能的选项 - Connection.setNetworkTimeout()
但它不是由SQL Server驱动程序实现的。我也无法访问JDBC驱动程序用于在其上设置TCP Keepalive的套接字。
如果我关闭连接然后再次打开它,它立即明白SQL Server实例不可访问。
我该如何克服我的问题,并在几秒钟内而不是15分钟内检测到丢失的连接?
同类问题:http://stackoverflow.com/questions/36553857/how-can-i-enforce-a-query-timeout-for-ms-sql-server-queries-run-via-the-ms- jdbc?rq = 1恐怕结论是:没有选择这个。 –
但是,SQL Server JDBC驱动程序现在是开源的,所以你可以自己添加它;)https://github.com/Microsoft/mssql-jdbc –
那,或者试试[JTDS](http:// jtds .sourceforge.net /)驱动程序,看看你是否可以得到你想要的行为。在其他地区,我发现它是更好的司机。 –