通过动态TCP端口与SQL server的java JDBC连接
我的sql server引擎使用动态TCP端口,例如52358。如果我在JDBC DB url连接字符串中指定了端口号52358,那么我可以毫无问题地进行JDBC查询,即
jdbc:sqlserver://serverName:52358;databaseName=myDB
但是,由于这是动态端口,如果下次重新启动sql server后该端口(52358)不可用,sql server可能会选择另一个端口
那么,在连接字符串中配置我的DB URL的最佳方法是什么
我尝试过的方法:
省略端口号,只使用实例名,即
jdbc:sqlserver://serverName;databaseName=myDB
这不管用。顺便说一下,sql server浏览器服务已经启用
找到解决方案(感谢Gord Thompson)。DB URL的complete form是:
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]
其中portNumber或instanceName可用于连接到serverName。然而
If both a portNumber and instanceName are used, the portNumber will take precedence and the instanceName will be ignored.
因此,对于动态端口,我们应该只使用instanceName进行连接,并保持SQL Browser服务运行(SQL Server提供SQL Server Browser Service,以监视端口,并将传入连接定向到该实例的当前端口)。因此,在我的例子中,正确的形式是:
jdbc:sqlserver://serverName\instanceName;databaseName=myDB
此外,我们应该记住
For optimal connection performance, you should set the portNumber when you connect to a named instance. This will avoid a round trip to the server to determine the port number
然后这将调用一个静态端口号
共 (0) 个答案