在SQL Server对等复制中添加节点时出现日志读取器错误

时间:2018-12-11 05:52:58

标签: sql-server logging replication p2p

我正在尝试在对等集群中再添加一个节点。 在当前状态下,我有3个服务器A,B和C。 我需要添加带有节点A(仅)的节点D。 为此,我使用了以下步骤:

  • 从节点A进行完整备份
  • 将其复制到节点D
  • 还原了备份
  • 在两个节点中添加了出版物。
  • 在发布者节点A中为节点D添加了订阅,其同步类型为“使用备份初始化”

命令运行后,节点A中的日志读取器开始引发以下错误:

  • 该进程无法在“节点A”上执行“ sp_MSadd_replcmds”。 (源:MSSQLServer,错误号:1007) 获取帮助:http://help/1007
  • 在分发服务器上,无法同步从指定的备份创建的nosync订阅所需的事务。 使用最新的日志,差异备份或完整数据库备份再次重试该操作。 (源:MSSQLServer,错误号:1007) 获取帮助:http://help/1007
  • IDistPut接口已关闭。 (来源:MSSQL_REPL,错误号:MSSQL_REPL2000) 获取帮助:http://help/MSSQL_REPL2000
  • 最后一步没有记录任何消息! (来源:MSSQL_REPL,错误号:MSSQL_REPL22037) 获取帮助:http://help/MSSQL_REPL22037

由于这会影响节点A,B和C之间的p2p复制,因此我删除了对节点D的订阅。 这不能解决错误。 在进一步调查中,我发现“分发清理”作业仍在运行。 可能是造成问题的原因。

现在,我只是希望在已经存在的节点A,B和C之间重新进行p2p复制,就像以前一样。 但是,我的所有尝试都没有导致Log Reader Agent发生变化。 它被卡在相同的错误。 -该进程无法在“节点A”上执行“ sp_MSadd_replcmds”。 (源:MSSQLServer,错误号:1007) 获取帮助:http://help/1007 -同步从指定备份创建的nosync订阅所需的事务在分发服务器上不可用。 使用最新的日志,差异备份或完整数据库备份再次重试该操作。 (源:MSSQLServer,错误号:1007) 获取帮助:http://help/1007 -IDistPut接口已关闭。 (来源:MSSQL_REPL,错误号:MSSQL_REPL2000) 获取帮助:http://help/MSSQL_REPL2000 -最后一步没有记录任何消息! (来源:MSSQL_REPL,错误号:MSSQL_REPL22037) 获取帮助:http://help/MSSQL_REPL22037

请提供任何解决此问题的建议。 谢谢

1 个答案:

答案 0 :(得分:1)

添加解决方案以使在SQL 2012上遇到此问题的所有人受益: 我们为此寻求了MS支持。显然,他们存储的过程“ sp_dropsubscriber”有时会丢失某些表。在我们的情况下,未从表MSnosyncsubsetup中删除该条目。经过数小时的分析,一旦他们发现了这一点,便进行备份,并删除与新订户相关的行。 这样可以修复日志读取器,并且复制工作正常进行。