我正在尝试将服务器添加为SQL Server的故障转移,并且它没有使用端口1443
,我正在使用端口2776
。我正在尝试指定它,但我尝试的一切都不起作用。我怎么能这样做?
private String url = "jdbc:sqlserver://server1:2776;DatabaseName=db;failoverPartner=server2";
我尝试了以下配置,但没有一个能够工作。
...failoverPartner=server2:2776
...failoverPartner=server2,2776
...failoverPartner=server2\\db
但每次我都会遇到异常。
com.microsoft.sqlserver.jdbc.SQLServerException:到主机服务器2的端口1433的TCP / IP连接失败。错误:“连接超时。验证连接属性,检查主机上是否正在运行SQL Server实例并接受端口上的TCP / IP连接,并且没有防火墙阻止与端口的TCP连接。”。
com.microsoft.sqlserver.jdbc.SQLServerException:与主机服务器2:2776,端口1433的TCP / IP连接失败。错误:“null。验证连接属性,检查主机上是否正在运行SQL Server实例并接受端口上的TCP / IP连接,并且没有防火墙阻止与端口的TCP连接。”。
- 醇>
com.microsoft.sqlserver.jdbc.SQLServerException:与主机服务器2,2776,端口1433的TCP / IP连接失败。错误:“null。验证连接属性,检查主机上是否正在运行SQL Server实例并接受端口上的TCP / IP连接,并且没有防火墙阻止与端口的TCP连接。”。
答案 0 :(得分:1)
从文档Connecting to SQL Server with the JDBC Driver - Setting the Connection Properties文档中,属性failoverPartner
:
注意:驱动程序不支持将故障转移伙伴实例的服务器实例端口号指定为连接字符串中failoverPartner属性的一部分。但是,支持在同一连接字符串中指定主体服务器实例的serverName,instanceName和portNumber属性以及故障转移伙伴实例的failoverPartner属性。
非常容易混淆,但看起来您无法为故障转移服务器指定端口号。
来自KB-2284190来自微软(Applications cannot connect to a mirror partner server when using port number in the failoverPartner attribute of the connection string )我几乎都在读同样的内容:
<强>原因强>
由于SQL Server JDBC驱动程序(所有版本)不支持解析FailoverPartner连接字符串属性的端口号并依赖DNS和SQL Server Browser服务(仅限命名实例)来解决错误消息伙伴服务器的连接信息。在满足症状部分中讨论的条件的环境中,JDBC驱动程序无法解析伙伴服务器信息,因此您会收到上面讨论的错误消息。
SQL镜像基础结构的这种行为是设计使然。因此,Microsoft JDBC驱动程序3.0版仅支持格式为&lt; server_name&gt; [\&lt; SQL_Server_instance_name&gt;]的故障转移伙伴属性值。
解决强>
要解决此问题,请在涉及数据库镜像的环境中使用以下方法之一:
对于作为镜像配置一部分的SQL Server的默认实例,请确保它们正在侦听TCP连接的默认端口1433.
对于命名实例,请确保SQL浏览器服务正在运行且网络上未阻止端口1434,并且服务器B未配置为隐藏实例。
总之,请执行以下操作之一:
failoverPartner
指定为server_name\instance_name
。确保SQL Server Browser服务正在运行且端口1434未被阻止。