当前位置: 首页 > 知识库问答 >
问题:

如何在 JDBC 连接 URL 中为故障转移指定端口SQL Server 中的合作伙伴服务器

羊慈
2023-03-14

我尝试添加一个服务器作为SQL Server的故障转移,但它不使用端口< code>1443,我使用端口< code>2776。我试着指定它,但是我尝试的一切都不起作用。我怎么能这么做呢?

private String url = "jdbc:sqlserver://server1:2776;DatabaseName=db;failoverPartner=server2";

我尝试了以下配置,但没有一个有效。

    < li > <代码>...failover partner = server 2:2776 < li > <代码>...failoverPartner=server2,2776 < li > <代码>...failover partner = server 2 \ \ db

但每次我都得到例外。

> < Li > < p > com . Microsoft . SQL server . JDBC . SQL server异常:到主机server2端口1433的TCP/IP连接失败。错误:“连接超时。请验证连接属性,检查主机上是否正在运行SQL Server实例并接受端口上的TCP/IP连接,并且没有防火墙阻止到该端口的TCP连接。。

com.microsoft.sqlserver.jdbc。SQLServerExcepthtml" target="_blank">ion:到主机服务器2:2776,端口1433的TCP/IP连接失败。错误:“null。请验证连接属性,检查SQL Server实例是否正在主机上运行并在端口上接受TCP/IP连接,以及是否没有防火墙阻止到端口的TCP连接。”。

到主机服务器2,2776,端口1433的TCP/IP连接失败。错误:“空。请验证连接属性,检查主机上是否正在运行SQL Server实例并接受端口上的TCP/IP连接,并且没有防火墙阻止到该端口的TCP连接。。

共有1个答案

赵河
2023-03-14

在文档“使用JDBC驱动程序连接到SQL Server设置连接属性”中,属性< code>failoverPartner:

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

措辞非常混乱,但看起来您无法为故障转移服务器指定端口号。

从微软的KB-2284190(当使用连接字符串的failoverPartner属性中的端口号时,应用程序无法连接到镜像伙伴服务器)中,我读到了几乎相同的内容:

原因

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

SQL镜像基础结构的这种行为是设计出来的,为此,Microsoft JDBC驱动程序版本3.0仅在格式中支持故障转移伙伴属性值

决议

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

>

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

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

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

    • 指定故障转移服务器以侦听TCP的端口1433。
    • 创建一个命名实例,并将故障溢出伙伴指定为server_name\instance_name。确保SQL服务器浏览器服务正在运行,端口1434没有被阻塞。

  •  类似资料:
    • 京东金融 App介绍 [京东金融](jr.jd.com)京东金融是京东数字科技集团旗下专注于金融科技服务的重要业务板块。 京东金融始终基于强大的数字科技能力,致力于为让消费者享受专业、安全的数字金融服务,旗下包含个人和企业两大服务体系。 在个人金融领域,“京东金融App”作为载体,通过独有的大数据技术及人工智能风控能力,携手400多家银行、120余家保险公司、110余家基金公司,已为过亿的消费者精

    • 「Container+」联盟是由 DaoCloud 于今年6月份发起的开放性组织。联盟以打造立体生态、共赢容器市场为目标,旨在推动容器技术在企业落地。 联合产业链上下游的合作伙伴 共同推动企业级容器云平台发展 帮助企业实现互联网的架构和业务双转型 如您有意成为 DaoCloud 「Container+」联盟成员,请与我们联系。

    • 我有3个复制的Redis实例运行在3台不同的机器上:A、B和C。我最初选择A作为我的主机。我还有3个哨兵(每台机器上有1个)监视A。

    • 我在一个容器上运行了几个服务。以下是一些详细信息: root@f5612e928609:/srv#netstat-ano-ptcp 活动的互联网连接(服务器和已建立的) Proto Recv-Q Send-Q本地地址外部地址状态PID/程序名定时器 tcp 0 00.0.0.0:80820.0.0.0:*听9/python关闭(0.00/0/0) tcp 0.0.0-0:45800 0.0/0.0

    • 我试图在集群故障切换期间测试我的软件行为,因此我想配置一个最简单的集群:一个主集群和两个从集群。我有以下内容的树文件7000.conf-7002.conf: cluster.conf的内容: 然后我配置了7000运行从0到16383的所有插槽,7001和7002是7000的副本: 然后我尝试通过命令或杀死进程来摆脱7000。其中一个奴隶应该提升自己为主人,但没有人这样做: 我已经等了几分钟了,我的