Alwayson 组的次要副本中的数据库是只读错误

Database is read-only error in Secondary Replica of Alwayson Groups

我尝试了很多东西并分析了很多文档,但我还没有找到解决方案。

我在 VmWare 中有三个虚拟机,名为 (DC,SQLServer01,SQLServer02)。所有 SQL 服务器都是域的成员。(DC) 我为 SQLServer01 和 SQLServer02 安装了故障转移集群。我在 SQLServer01 中做了必要的配置。然后我为两台服务器都安装了 SQL Server 2014。现在,我创建了一个 alwaysOn 组。 SQLServer01 是主要的,其他是次要的。当我切断 SQLServer01 的连接时,一切都很好(次要成为主要)。对于其他条件是可以接受的。

但是,当所有服务器都在线时,除了在我的辅助副本中进行读取操作外,我无法执行任何操作(插入、更新、删除、更改等)。我总是看到 "database is read only" 错误。在Alwayson组的属性中,primary和secondary replica都有所有连接,secondary readable是"YES".

我想在所有服务器都在线的情况下进行CRUD操作。 (我的意思是,也为辅助副本做所有事情。)

那么,你有什么建议或想法吗?

感谢您的宝贵时间和考虑。

发生错误是因为无法写入sql 服务器中的辅助副本。只有主副本可以托管读写数据库,并且一个可用性组只能有一个主副本。 Secondary replicas can host read-only databases only。当两个副本都可用时,两者中只有一个可以为主,因此支持读写。当只有一个副本可用时,该副本成为主要副本,因为没有其他副本,并且可以对该副本进行读写操作。

您需要配置的是复制。

在 SQL 服务器中,merge replication 允许您在多个节点上写入,通过定期同步解决冲突并将更改推送到所有副本。

点对点复制是另一种解决方案。应用层必须不允许冲突(在多个节点更新同一行),但要快得多。