【问题标题】:Distribution agent can't connect to subscriber分发代理无法连接到订阅者
【发布时间】:2014-08-11 22:36:09
【问题描述】:

我在不同的不受信任的域上有两台服务器。服务器 A 是发布者,正在运行 SQL Server 2008 R2。服务器 B 是订阅者,并且正在运行 SQL 2008 R2 Express。由于服务器位于没有信任关系的不同域中,因此我使用直通身份验证来连接到每台服务器。这包括在每台服务器上使用相同的用户名和密码创建一个本地 Windows 帐户,然后使用 Windows 身份验证连接到远程服务器。使用这种方法,我可以在 SQL Server Management Studio 中将服务器 A 连接到服务器 B,反之亦然。我还可以在服务器 A 上创建事务发布,并在服务器 B 上创建对它的推送订阅。

但是,当我打开查看同步状态窗口时,我收到消息“进程无法连接到订阅服务器‘服务器 B’”。打开复制监视器给我以下错误消息:

进程无法连接到订阅服务器“服务器 B”。 (来源:MSSQL_REPL,错误号:MSSQL_REPL0)

命名管道提供程序:无法打开与 SQL Server [53] 的连接。 (来源:MSSQLServer,错误号:53)

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。 (来源:MSSQLServer,错误号:53)

登录超时(来源:MSSQLServer,错误号:HYT00)

我所读到的有关此错误的所有其他内容都表明这是一个权限问题,但我认为情况并非如此。为了确保没有任何权限问题,我在每台服务器上创建了用于传递身份验证本地管理员的 windows 帐户,在发布者和订阅者数据库上创建了 db_owners,在每个 SQL 实例上创建了 sysadmins服务器。

有谁知道权限以外的其他原因是否会导致此错误?令我困惑的是,服务器显然能够使用直通身份验证相互连接,但在分发代理处连接仍然失败。

【问题讨论】:

  • 安装 SQL Server 后是否更改过订阅服务器主机名?
  • 它有,但我能够通过使用 sp_dropserver 和 sp_addserver 并重新启动 MSSQL 服务来解决该问题。现在,当我选择 @@SERVERNAME 时,它与服务器的实际名称匹配。
  • 从发布者尝试设置一个别名或主机名条目指向订阅者,看看是否有帮助。
  • 我也这样做了,使用 SQL 身份验证,结果相同。我可以创建订阅,但分发代理的连接失败。
  • 对,尝试设置一个别名或指向订阅服务器的主机文件条目,看看是否有帮助。

标签: sql-server sql-server-2008-r2 transactional-replication


【解决方案1】:

我遇到了同样的问题,我也通过在 32 位配置中完成别名来解决它。希望对您有所帮助!

【讨论】:

    【解决方案2】:

    这可能是几件事,首先可能是防火墙问题,或者您的分销代理找不到分销商。确保浏览器服务正在运行,如果分发服务器是一个实例,这一点尤其重要。 然后打开端口 1433 和 1434 用于防火墙上的入站通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-21
      • 2016-12-14
      • 2021-09-11
      • 1970-01-01
      • 2022-08-07
      • 1970-01-01
      • 2020-04-11
      相关资源
      最近更新 更多