我有一个两节点 SQL Server 2016 多子网可用性组。我正在尝试设置从 AG 到独立实例的跨国复制以进行报告,该实例也充当远程分发者。我们只需要一小部分表,因此无法选择将独立实例添加为第三个副本。
我已按照Microsoft 指南进行配置。我已经运行了EXEC sys.sp_redirect_publisher
,当我运行EXEC sys.sp_validate_replica_hosts_as_publishers
它时,它会返回 AG 侦听器。但是,当我们对 AG 进行故障转移时,复制将停止工作,并在复制监视器中报告以下错误
错误消息:无法查询原始发布者“PUB1”和发布者数据库“AlwaysOnTest”的重定向服务器“AGL”以确定远程服务器的名称;错误 7303,错误消息“错误 7303,级别 16,状态 1,消息:无法为链接服务器“[B66E8E27-E422-41DB-BBBC-254D450468D7]”初始化 OLE DB 提供程序“SQLNCLI11”的数据源对象。(来源:MSSQL_REPL,错误号:MSSQL_REPL21879) 获取帮助:http://help/MSSQL_REPL21879 验证重定向发布者时记录了错误。(来源:MSSQL_REPL,错误号:MSSQL_REPL22037) 获取帮助:http://help/MSSQL_REPL22037
我检查并尝试过的几件事
- 订阅者的已检查链接服务器存在于所有辅助副本主机上。
- 基于此,使用 sp_changedistpublisher 将安全模式切换为 SQL auth。
如果我在分发服务器上重新运行 AG 故障转移,EXEC sys.sp_validate_replica_hosts_as_publishers
它会返回
无法在与虚拟网络名称“AGL”关联的可用性组主节点上查询 sys.availability_replicas 以获取成员副本的服务器名称:错误 = 7303,错误消息 = 错误 7303,级别 16,状态 1,消息:无法初始化数据链接服务器“[7A7DA613-BFDA-4C51-B62C-9C7CD94E769E]”的 OLE DB 提供程序“SQLNCLI11”的源对象..',
我被卡住了下一步该尝试什么....请帮助!!!
2020 年 16 月 6 日更新
当 AG 发生故障转移时,我尝试从远程分发服务器连接到 AG 侦听器。SSMS 连接正常,但是当我尝试使用 SQLCMD 连接时,它返回了一个错误。我也可以绕过侦听器直接从分发服务器连接到故障转移实例。
Sqlcmd:错误:Microsoft ODBC Driver 13 for SQL Server:命名管道提供程序:无法打开与 SQL Server 2的连接。. Sqlcmd:错误:Microsoft ODBC Driver 13 for SQL Server:登录超时已过期。Sqlcmd:错误:Microsoft ODBC Driver 13 for SQL Server:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。
其根本原因是连接超时,因为可用性组位于多子网可用性组中。这已通过遵循Microsoft的此文档得到解决。