SQL Server 2017 CU3 cluster=NONE可用性组添加异地副本报错19417求助
解决SQL Server 2017 CU3无集群AG添加异地副本时的错误19417
这个问题我之前帮不少用户排查过,SQL Server 2017 CU3里的cluster=NONE可用性组确实存在一些容易踩的坑,尤其是添加异地副本时触发错误19417(提示操作不支持Windows Server故障转移群集环境),明明没用到WSFC却出现这个提示,大概率是以下几个原因,你可以逐一排查:
确认所有副本的cluster_type配置正确
先检查本地AG和准备添加的异地副本的集群类型是否都是NONE:SELECT name, cluster_type FROM sys.availability_groups; -- cluster_type=0代表NONE,1代表WSFC,2代表FCIV如果任何一个副本的实例是基于WSFC配置的(哪怕是异地实例),都会触发这个错误提示。另外也可以检查实例层面的集群状态:
SELECT serverproperty('IsClustered') AS IsClustered;返回0才代表是非集群实例。
排查CU3的已知bug
SQL Server 2017 CU3在无集群AG的跨站点副本添加场景中存在误判WSFC环境的问题,微软在后续的CU(比如CU4及以上版本)中修复了这类问题。你之前用CU1也出过问题,建议直接升级到更高版本的累积更新,比如CU10及以后,稳定性会好很多。改用T-SQL手动添加副本,避免SSMS向导的逻辑错误
有时候SSMS图形向导的判断逻辑会有偏差,试试用纯T-SQL语句添加异地副本:ALTER AVAILABILITY GROUP [YourAGName] ADD REPLICA ON N'RemoteInstanceName' WITH ( ENDPOINT_URL = N'TCP://RemoteServerName:5022', -- 替换为异地实例的端点地址 AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT, -- 异地副本建议用异步提交 FAILOVER_MODE = MANUAL, SEEDING_MODE = AUTOMATIC -- 如果自动初始化有问题,可以改成MANUAL后手动备份还原 );执行语句后看是否还会触发错误19417,如果还是报错,查看详细的错误日志,里面可能有更具体的原因。
验证网络和端点权限
虽然错误提示是WSFC相关,但有时候网络不通或者端点权限不足也会导致误导性错误:- 确认两个站点之间能ping通服务器名,SQL Server端点的端口(默认5022)在防火墙中是开放的
- 异地实例的SQL Server服务账户需要有本地AG端点的CONNECT权限
- 检查异地实例的端点是否正常运行:
状态应该是SELECT name, state_desc FROM sys.tcp_endpoints WHERE type_desc = 'DATABASE_MIRRORING';STARTED。
内容的提问来源于stack exchange,提问作者JohnH
相关产品推荐
相关产品推荐

