我们有一个作为Azure App服务托管的ASP.Net Web应用程序,它连接到Azure SQL Server。我们在北部有2个Azure SQL Server,在南部有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
北方是主要的,南方是次要的,它们被添加到故障转移组中。 AsP.Net Web应用程序连接字符串使用专用端点到北方区域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数据库,因此为了进行测试,我们删除了Northern 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
从App服务(控制台)进行的TCPPing对于故障转移组FQDN正常工作,并返回Connected(基本上,App服务能够对Failover组以及专用SQL端点执行ping操作。)
我的问题是,在这种情况下,连接字符串应该是什么样子?在这种情况下,我在2个不同的区域中有2个SQL Server,并且具有专用端点和故障转移组。我不确定web.config连接字符串中应包含的数据库服务器名称是什么,以便在主服务器出现故障时它可以自动连接到辅助服务器。
有帮助吗?