SQL Server 可用性组自动故障转移不起作用

Posted

技术标签:

【中文标题】SQL Server 可用性组自动故障转移不起作用【英文标题】:SQL Server Availability Group Automatic Failover Not Working 【发布时间】:2015-01-19 10:13:27 【问题描述】:

我有一个 ASP.NET MVC Web 应用程序,它使用实体框架连接配置了高可用性的 SQL Server 2012。它被配置为自动故障转移到辅助服务器,并且在尝试连接 SQL Server Management Studio 时效果很好。我可以确认这一点,然后将数据读取或写入数据库。

不知何故这不会发生在应用程序中,我收到以下错误:

目标数据库 ('DbName') 位于可用性组中,当应用程序意图设置为只读时,当前可访问连接。有关应用程序意图的详细信息,请参阅 SQL Server 联机丛书。

这是我正在使用的连接字符串:

<add name="DataModel" 
     connectionString="Data Source=DBCL01;Initial Catalog=Database;User Id=user; Password=password;" 
     providerName="System.Data.SqlClient" />

有人知道我该如何解决这个问题吗?

【问题讨论】:

【参考方案1】:

问题是您的应用程序没有被定向到主(可写)服务器,而是被重定向到只读辅助副本。

我遇到了类似的问题,我的问题是缺少连接字符串 ApplicationIntent=ReadWrite,并且 DNS 没有很好地解析可用性侦听器。

还要检查此AlwaysOn Availability Groups Connectivity Cheat Sheet,因为可用性组的连接选项设置错误可能会导致连接错误并拒绝连接到主服务器。

【讨论】:

以上是关于SQL Server 可用性组自动故障转移不起作用的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server数据库镜像基于可用性组故障转移

从同步自动故障转移 AlwaysOn 可用性组 AAG 传送日志

在Windows Server 2012 R2中搭建SQL Server 2012故障转移集群

SQL Server 2012 标准版是不是能搭建alwayson

SQL Server 的多子网故障转移

sql server alwaysOn理论篇