ApplicationIntent=ReadOnly Traffic 当没有可读辅助可用时

Aco*_*Lil 5 sql-server-2012 availability-groups

我们有一个带有 2 个节点的 SQL 2012 AlwaysOn 可用性组。我们在 2 个副本之间进行同步提交。它们都设置为在充当辅助节点时接受只读连接,并在充当主节点时接受所有连接。

我们通过侦听器和 ApplicationIntent=ReadOnly 在连接字符串中为只读流量设置了 ReadOnly 路由。一切正常。

几天前,我们重新启动了可读辅助节点,在它关闭期间,只读流量无法连接到可读辅助节点(如预期),但并没有像我想象的那样重定向到主节点。而是收到以下错误

无法访问 SalesDb 数据库,因为没有启用只读访问的联机辅助副本。

我的问题是,如果由于某种原因没有可读的辅助副本可用,只读流量是否不会被侦听器路由到 Allow All Connections Primary 副本,而不是收到连接错误?

任何答案都感激地收到。

阿康利尔

Ste*_*eli 3

配置服务器以接受只读流量有几个步骤。以下链接将引导您完成它,http://msdn.microsoft.com/en-us/library/hh710054.aspx,但基本上您需要配置 AG 中的每台服务器,然后为每台服务器设置路由。

下面是涉及的 T-SQL:

ALTER AVAILABILITY GROUP [AG1]
 MODIFY REPLICA ON
N'COMPUTER01' WITH 
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
 MODIFY REPLICA ON
N'COMPUTER01' WITH 
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER01.contoso.com:1433'));

ALTER AVAILABILITY GROUP [AG1]
 MODIFY REPLICA ON
N'COMPUTER02' WITH 
(SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY));
ALTER AVAILABILITY GROUP [AG1]
 MODIFY REPLICA ON
N'COMPUTER02' WITH 
(SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://COMPUTER02.contoso.com:1433'));

ALTER AVAILABILITY GROUP [AG1] 
MODIFY REPLICA ON
N'COMPUTER01' WITH 
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER02','COMPUTER01')));

ALTER AVAILABILITY GROUP [AG1] 
MODIFY REPLICA ON
N'COMPUTER02' WITH 
(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('COMPUTER01','COMPUTER02')));
GO
Run Code Online (Sandbox Code Playgroud)

听起来您可能缺少主服务器的配置和/或路由信息。