【发布时间】:2018-10-19 13:42:57
【问题描述】:
我的 sql server 引擎正在使用动态 TCP 端口,例如 52358。如果我在我的 JDBC DB url 连接字符串中指定端口号 52358,我可以毫无问题地进行 JDBC 查询,即,
jdbc:sqlserver://serverName:52358;databaseName=myDB
但是,由于这是动态端口,如果下次重启sql server后该端口(52358)不可用,sql server可能会选择另一个端口。
那么在连接字符串中配置我的数据库 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。不过,
如果同时使用 portNumber 和 instanceName,则 portNumber 将 优先,instanceName 将被忽略。
因此,对于动态端口的情况,我们应该只使用instanceName进行连接并保持SQL Browser服务运行(SQL Server提供SQL Server Browser Service来监控端口,并将传入连接定向到当前端口)实例)。因此,就我而言,正确的形式是:
jdbc:sqlserver://serverName\instanceName;databaseName=myDB
另外,我们应该记住
为了获得最佳连接性能,您应该在以下情况下设置端口号 您连接到命名实例。这样可以避免往返 服务器确定端口号
然后这将要求一个静态端口号。
【问题讨论】:
标签: java sql-server jdbc tcp mssql-jdbc