我使用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分钟内解决我的问题并检测丢失的连接?
答案 0 :(得分:0)
Microsoft MSSQL-JDBC现已开源。最近,MSSQL-JDBC团队实施了sockettimeout& querytimeout秒。这肯定会解决您的问题。