SQL Server 2012 AlwaysOn 可用性组,始终连接到主服务器

Posted

技术标签:

【中文标题】SQL Server 2012 AlwaysOn 可用性组,始终连接到主服务器【英文标题】:SQL Server 2012 AlwaysOn Availability Group, always connect to primary server 【发布时间】:2013-10-03 13:27:09 【问题描述】:

我已经配置了一个 AlwaysOn 可用性组,没有任何问题。

数据库同步镜像,两个SQL Server都正常工作。

我创建了一个可用性组侦听器并将主服务器配置为仅接受 ReadWrite 连接,将辅助服务器配置为仅接受 ReadOnly 连接。

在 .NET Framework 4.5 中,我使用 SqlClient.SqlConnection 连接到 Listener,这是连接字符串:

Server=tcp:SQLListen.domain-name.com, 1435;Database=TestData;User id=user;Password=password;MultiSubnetFailover=True;ApplicationIntent=ReadOnly

Microsoft 文档说,使用此 ConnectionString,当我使用 ReadOnly 时,将与辅助服务器建立连接,并且将与主服务器建立读写连接,购买我总是可以连接到主服务器。

使用 ReadOnly 时收到错误消息,因为主服务器不接受 ReadOnly 连接。

当我连接到 ReadWrite 时,我也连接到主服务器,这是应该的。

我已尝试连接到域名以及直接可用性组侦听器 IP 地址。

谁能告诉我我做错了什么?

谢谢。

【问题讨论】:

【参考方案1】:

我找到了解决办法。

我正在尝试做的是所谓的只读路由列表。

要进行配置,您应该使用以下命令为任何服务器分配一个新 URL:

ALTER AVAILABILITY GROUP [Availavility Group]
MODIFY REPLICA ON N'Replica Node' WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL=N'tcp://route:1433'))

然后将路由列表分配给主节点:

ALTER AVAILABILITY GROUP [<your availabiliry group>]
MODIFY REPLICA ON N'<your availability group replica>' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST = (N'<first preference replica>', N'<second preference replica>')))

所有信息都在这里:

http://scottless.com/blog/archive/2012/01/25/sql-server-2012-configuring-alwayson-read-only-routing.aspx

【讨论】:

以上是关于SQL Server 2012 AlwaysOn 可用性组,始终连接到主服务器的主要内容,如果未能解决你的问题,请参考以下文章

从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)

使用 MultiSubnetFailover 连接到 SQL Server 2012 AlwaysOn 组侦听器会导致超时

SQL Server 2012 AlwaysOn 可用性组,始终连接到主服务器

基于Windows 2012配置SQL Server 2014 AlwaysOn

sql server alwaysOn理论篇

从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)