我可以在非镜像 SQL 服务器设置的连接字符串中使用故障转移伙伴吗?

我可以在非镜像 SQL 服务器设置的连接字符串中使用故障转移伙伴吗?

我已经设置了两个 SQL 服务器实例,IP 分别为 xxxx 和 yyyy。在应用程序级别指定与 SQL 服务器的连接时,我可以指定如下连接字符串吗?

<connection-url>jdbc:sqlserver://x.x.x.x:port; databaseName=productionDB; failoverPartner=jdbc:sqlserver://y.y.y.y:port</connection-url>

我尝试过解决这个问题,但是当我手动禁用 SQL Server 1 数据库时,在应用程序级别,它似乎确实在尝试连接到第二台服务器,但却失败了

连接到主机 yyyy,端口 1433 失败。错误:“null”。验证连接属性,确保 SQL 服务器实例正在主机上运行并在端口接受 TCP/IP 连接。确保到端口的 TCP 连接未被防火墙阻止。

我知道两个 SQL 实例之间的连接属性(例如用户、密码)都是相同的,因为如果我重新启动上面的应用程序并交换两个 IP,一切仍然有效。我还知道故障转移合作伙伴只应在设置数据库镜像时使用。但是,根据这个文章,无需设置底层镜像数据库似乎是可行的。

答案1

SQL 2016 中已弃用镜像

https://docs.microsoft.com/en-us/sql/database-engine/deprecated-database-engine-features-in-sql-server-2016

您将使用 SQL 可用性组。

https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server

它安装起来非常容易并且运行良好。

这是更好、更完整的演练之一,您需要更改一些内容,但它已经相当不错了。

http://blog.fedenko.info/2016/06/sql-server-2016-always-on-availability.html

您的连接字符串不会有太大变化,只需要更改连接 IP 并在后面添加安全参数。

答案2

使用 AlwaysOn Basic 的 SQL 2016 Standard - 现在,在几个实例中,我们不得不使用故障转移伙伴,因为 SQL 或 DC 响应请求的时间太长。因此,在我们的应用程序的连接字符串中,我们有“数据连接 = SERVERNAME\NAMEDINSTANCE;故障转移伙伴 = SERVERNAME2\NAMEDINSTANCE;”。作为只有两个节点的基本配置,这似乎可以正常运行。

相关内容