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 可用性组,始终连接到主服务器