繁体   English   中英

SQL Server JDBC驱动程序无法快速检测丢失的连接

[英]SQL Server JDBC driver can't detect lost connection quickly

我正在使用JDBC驱动程序sqlserver-jdbc-4.0.jar连接到SQL Server。 我创建了一个连接并成功使用它。

然后我关闭了SQL Server机器的网络接口。 当我运行下一个命令时,我的应用程序一侧的JDBC驱动程序需要大约15分钟才能理解连接丢失。 我尝试了几件事:

  1. 配置JDBC驱动程序属性LoginTimeout=5, LockTimeout=5, QueryTimeout=5 (5秒)
  2. 调用Statement.setQueryTimeout()将超时设置为5秒
  3. 调用Connection.isValid() ,超时5秒 - 它也停留了15分钟

另一个可能的选项 - Connection.setNetworkTimeout()但它不是由SQL Server驱动程序实现的。 我也无法访问JDBC驱动程序使用的套接字来设置TCP Keepalive。

如果我关闭连接然后再次打开它,它会立即知道SQL Server实例无法访问。

如何在几秒钟而不是15分钟内克服我的问题并检测丢失的连接?

Microsoft MSSQL-JDBC现在是开源的。 最近MSSQL-JDBC团队实现了sockettimeoutquerytimeout 这肯定会解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM