首页 > 解决方案 > 带有专用终结点的主动故障转移的 Azure SQL 数据库连接字符串

问题描述

我们有一个 ASP.Net Web 应用程序作为连接到 Azure SQL Server 的 Azure 应用程序服务托管。我们有 2 个 Azure SQL Server,一个在北部,另一个在南部(用于故障转移)。我们为两个 sql 服务器创建了私有端点:-

NorthRegion-devxxxs-sql-server.database.windows.net
SouthRegion-devxxxs-sql-server.database.windows.net

以下是故障转移组中的读/写侦听器端点:-

XXXXX-devxxxxs-failovergroup.database.windows.net

North 是主要的,South 是次要的,它们被添加到故障转移组。AsP.Net Web 应用程序连接字符串使用专用端点连接到 North Region SQL Server,如下所示:-

  <add name="xxxxxxxx" connectionString="Data Source=tcp:NorthRegion-devxxxs-sql-server.database.windows.net,1433;Initial Catalog=dtasbasename;Persist Security Info=False;User ID=Admin;Password=YYYYYY;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient" />

我们进行了故障转移测试,SQL Server 被切换为 South Primary 和 North Secondary,但我们怀疑由于 pvt 端点它仍然连接到 North region 数据库,因此为了测试我们删除了 North region 数据库并且我们得到了运行时异常。

然后我将连接字符串更改为使用 READ/WRITE Listner,这就是我的连接字符串的外观(相同的用户 ID 和密码),但仍然出现运行时异常:无法连接到数据库。以下是使用故障转移组中的侦听器端点修改后的连接字符串:-

<add name="xxxxxxxx" connectionString="Data Source=tcp:XXXXX-devxxxxs-failovergroup.database.windows.net,1433;Initial Catalog=dtasbasename;Persist Security Info=False;User ID=Admin;Password=YYYYYY;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName="System.Data.SqlClient" />


TCPPING XXXXX-devxxxxs-failovergroup.database.windows.net:1433

来自应用程序服务(控制台)的 TCPPing 对故障转移组 FQDN 正常工作并返回已连接(基本上应用程序服务也能够 ping 故障转移组以及专用 SQL 端点)。

我的问题是,在这种情况下,连接字符串应该是什么样子,我在 2 个不同区域中拥有 2 个 SQL Server,具有专用端点和故障转移组。我不确定 web.config 连接字符串中的数据库服务器名称应该是什么,以便在主服务器出现故障时它可以自动连接到辅助服务器。

有什么帮助吗?

标签: azureazure-sql-databaseazure-virtual-network

解决方案


推荐阅读