我们在 SQL 2017 上有一个读取规模的可用性组,多年来一直运行无故障。现在,当我们尝试添加新副本(CLUSTER_TYPE=NONE)时,它会失败,因为主副本现在“认为”它是 WSFC 的一部分 - 然而,它不是 WSFC 的一部分,而且从来都不是。它是一个独立的工作组服务器。该 AG 的其他读取规模副本仍然正常工作——这一切都非常奇怪。你知道如何将AG修改为无集群吗?我没有找到一种方法来使用活动的 AG 来做到这一点(即我在 CREATE 中看到它,但在 ALTER 中没有看到它)——但是我不知道当 AG 认为它在集群中但显然是在集群中时它是如何工作的不是。有什么建议吗?
错误信息/尝试使用“ALTER AVAILABILITY GROUP {AG_Name} JOIN WITH (CLUSTER_TYPE = NONE)”进行加入时,会失败并显示以下信息:
消息 47100,级别 16,状态 0,第 1 行 可用性组“{AG_Name}”的集群类型与其主要配置不匹配。验证指定的可用性组群集类型是否正确,然后重试该操作。
消息 41080,级别 16,状态 0,第 1 行 无法将可用性组“{AG_Name}”的本地可用性副本的 SQL Server 实例名称删除到 Windows Server 故障转移群集节点名称映射条目。该操作遇到 SQL Server 错误 35222,已终止。有关此 SQL Server 错误和纠正措施的详细信息,请参阅 SQL Server 错误日志。
消息 41158,级别 16,状态 3,第 1 行 无法将本地可用性副本加入可用性组“{AG_Name}”。该操作遇到 SQL Server 错误 47100,已回滚。检查 SQL Server 错误日志以获取更多详细信息。解决错误原因后,重试 ALTER AVAILABILITY GROUP JOIN 命令。
sys.dm_hadr_cluster 返回以下内容(cluster_name 为空): cluster_name quorum_type quorum_type_desc quorum_state quorum_state_desc
0 NODE_MAJORITY 1 NORMAL_QUORUM
sys.availability_groups 对于 cluster_type 返回 0,对于 cluster_type_desc 返回 wsfc
sys.hadr_cluster_members 返回一行:{primaryservername}
0 CLUSTER_NODE 1 上空
这是不可能的,需要删除并重新创建。
如果您需要进一步帮助,请发布实际错误、DMV 的输出(sys.availability_groups、副本等)以及其他相关信息。
然后它是一个 WSFC 集成 AG,元数据无法更改。要么就是一直这样,有人在不同的节点上创建了一个具有相同名称的新 AG,或者有人删除了旧的 AG,并使用相同的名称再次创建了它,但不是正确的集群类型。
谁知道这可能发生在什么时候。您可以尝试检查 XE 数据是否已设置为运行(默认情况下不会,如果使用向导设置 AG,它将启用它),并查看最近是否发生了任何事情,但这不太可能。
查看前几天/几周/几个月的错误日志(如果有)也可能会提供一些信息。
这是 SQL Server 无法访问群集数据库的一般错误,如果您没有 WSFC 或者未正确设置,则这是有意义的。由于似乎没有实际的集群设置,因此这是可以预料的。