Java 如何在SQL server中为failoverPartner服务器的JDBC连接URL中指定端口

Java 如何在SQL server中为failoverPartner服务器的JDBC连接URL中指定端口,java,sql-server,jdbc,failover,database-mirroring,Java,Sql Server,Jdbc,Failover,Database Mirroring,我试图添加一台服务器作为SQL server的故障切换,但它没有使用端口1443,而是使用端口2776。我正试图具体说明,但我尝试的一切都不起作用。我怎么能这么做 private String url = "jdbc:sqlserver://server1:2776;DatabaseName=db;failoverPartner=server2"; 我尝试了以下配置,但都不起作用 …failoverPartner=server2:2776 …failoverPartner=server2277

我试图添加一台服务器作为SQL server的故障切换,但它没有使用端口
1443
,而是使用端口
2776
。我正试图具体说明,但我尝试的一切都不起作用。我怎么能这么做

private String url = "jdbc:sqlserver://server1:2776;DatabaseName=db;failoverPartner=server2";
我尝试了以下配置,但都不起作用

  • …failoverPartner=server2:2776
  • …failoverPartner=server22776
  • …failoverPartner=server2\\db
  • 但每次我都有例外

  • com.microsoft.sqlserver.jdbc.SQLServerException:到主机server2端口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:到主机server2、2776、端口1433的TCP/IP连接失败。错误:“null。请验证连接属性,检查SQL Server实例是否正在主机上运行并在端口接受TCP/IP连接,以及是否没有防火墙阻止到端口的TCP连接。”

  • 从文档中的属性
    failoverPartner

    注意:驱动程序不支持将故障转移伙伴实例的服务器实例端口号指定为连接字符串中failoverPartner属性的一部分。但是,支持在同一连接字符串中指定主体服务器实例的serverName、instanceName和portNumber属性以及故障转移伙伴实例的failoverPartner属性

    措辞非常混乱,但似乎无法为故障转移服务器指定端口号


    从微软的KB-2284190()中,我读到了大致相同的内容:

    原因

    出现这两条错误消息的原因是,SQL Server JDBC驱动程序(所有版本)不支持解析FailoverPartner连接字符串属性的端口号,并且依赖DNS和SQL Server浏览器服务(仅用于命名实例)解析伙伴服务器的连接信息。在满足症状部分中讨论的条件的环境中,JDBC驱动程序无法解析合作伙伴服务器信息,因此您会收到上面讨论的错误消息

    SQL镜像基础结构的这种行为是设计的。因此,Microsoft JDBC驱动程序3.0版仅支持[\]格式的故障转移伙伴属性值

    分辨率

    要解决此问题,请在涉及数据库镜像的环境中使用以下方法之一:

    • 对于作为镜像配置一部分的SQL server默认实例,请确保它们正在默认端口1433上侦听TCP连接

    • 对于命名实例,请确保SQL browser服务正在运行,网络上的端口1434未被阻止,并且服务器B未配置为隐藏实例


    总之,请执行以下操作之一:

    • 指定要在端口1433上侦听TCP的故障转移服务器
    • 创建一个命名实例,并将
      failoverPartner
      指定为
      server\u name\instance\u name
      。确保SQL Server Browser服务正在运行且端口1434未被阻止

    我添加了标签
    故障切换
    数据库镜像
    ,因为我假设您正在使用这些标签。。。对吗?对你有帮助吗?这不是一个完全相同的问题,但可能与
    failoverPartner
    名称中缺少的实例名称有关。此外,您是否阅读了以下链接:?也许那里有一些指示?谢谢,@TT。我想我需要instanceName来完成这项工作,但我还没有收到它进行测试。我查过了,但没什么帮助。谢谢你的帮助。正如您所说,除了添加instanceName之外,无法更改故障切换端口。你能把这个加到你的答案里吗?这样我就可以把它作为解决方案了?