MSSQLSERVER_21879

适用范围:SQL Server

详细信息

Attribute
产品名称 SQL Server
事件 ID 21879
事件来源 MSSQLSERVER
组件 SQLEngine
符号名称 SQLErrorNum21879
消息正文 无法查询重定向服务器“%s”以找到原始发布服务器“%s”和发布服务器数据库“%s”来确定远程服务器的名称;错误 %d,错误消息“%s”。

说明

sp_validate_redirected_publisher 使用其创建的临时链接服务器连接到重定向发布服务器,以便发现远程服务器的名称。 在链接服务器查询失败时,将返回错误 21879。 对请求远程服务器名称的调用通常是首次使用临时链接服务器,因此如果存在连接问题,则这些问题可能首先会与此调用一起出现。 此远程调用只需在远程服务器上执行选择 @@servername

用于查询重定向发布服务器的链接服务器使用在为原始发布服务器调用 sp_adddistpublisher 时提供的安全模式、登录名和密码。

  • 如果使用 SQL Server 身份验证(安全模式 0),则指定的登录名和密码用于连接到远程服务器。

  • 如果使用 Windows 身份验证(安全模式 1),则对此连接使用可信连接。

    • 如果 sp_validate_redirected_publisher 被用户显式调用,则用户运行时所使用的 Windows 登录名将用于该连接。

    • 如果复制代理从 sp_get_redirected_publisher 中调用 sp_validate_redirected_publisher,则将使用与该代理关联的 Windows 登录名。

错误 21879 可能指示在重定向目标发布服务器上使用未知的登录名调用了 sp_validate_redirected_publisher

用户操作

确保 SQL Server 身份验证登录名或Windows 身份验证登录名在所有可用性组副本上都有效,并且有足够的授权访问发布服务器数据库中的订阅元数据表(syssubscriptions 和 sysmergesubscriptions)。

如果由非分发服务器的其他节点上运行的复制代理(如在订阅服务器上运行的合并代理)启动的 sp_get_redirected_publisher 调用返回了错误 21879,则应注意一些特殊事项。 如果Windows 身份验证用于与重定向发布服务器的连接,则必须为 Kerberos 身份验证配置 SQL Server 才能成功建立连接。 使用Windows 身份验证且未为 Kerberos 身份验证配置 SQL Server 时,订阅服务器上运行的合并代理将收到指示“NT AUTHORITY\ANONYMOUS LOGON”登录失败的错误 18456。 可以通过三种方式解决此问题:

  • 配置 SQL Server 进行 Kerberos 身份验证。 请参阅 SQL Server 联机丛书中的 Kerberos 身份验证和 SQL Server

  • 使用 sp_changedistpublisher 更改与 MSdistpublishers 中的原始发布服务器相关联的安全模式,并指定要用于该连接的登录名和密码。

  • 当在分发服务器上调用 sp_get_redirected_publisher 时,在合并代理命令行中指定命令行参数 BypassPublisherValidation 以跳过验证。