无法更新 'database_name' 数据库在 Always on Availability 组中是只读的

Failed to update 'database_name' database is read only in Always on Availability group

背景:

我有一个具有 4 个节点(DB1、DB2、DB3、DB4)的 Always On 可用性组设置。我正在使用托管在其他服务器上的文件共享见证。 AG 上的所有节点都设置为自动故障转移。并且作为可读的辅助选项设置为 'yes'.

问题:

例如,让我们将 DB1 视为 AG 和 WSFC 上的主节点。现在,每当我停止 DB1 上的 MSSQL 服务时,DB2 或其他 2 个将成为 AG 上的主要服务。但是,DB1 仍然是 WSFC 上的主要主机。这里的主要问题是每当我的应用程序尝试连接到数据库时,我都会收到一条错误消息“无法更新 'Dbname' 数据库是只读的”。但是当我手动将 WSFC 的节点更改为现在的主 AG DB 时,我的应用程序开始工作。有人可以帮我解决这个问题吗?

whenever my application tries to connect to the DB, I get an error as "Failed to update 'Dbname' database is read only"

您的应用需要通过 AG Listener 连接到 AG,它只会在托管主数据库副本的节点上处于活动状态。

如果您的应用正在连接到侦听器,您需要对连接进行故障排除。确认 DNS 解析正在返回所有 IP 地址,并且只有托管主副本的 IP 地址打开了请求的 SQL 服务器端口。