在 SQL 服务器对等复制中添加节点时记录 Reader 错误
Log Reader error while adding a node in SQL Server peer to peer replication
我正在尝试在对等集群中再添加一个节点。
在当前状态下,我有 3 个服务器 A、B 和 C。
我需要添加一个节点 D 和节点 A(仅)。
为此,我使用了以下步骤:
- 从节点 A 进行完整备份
- 复制到节点 D
- 恢复了备份
- 在两个节点中添加了出版物。
- 在发布者节点 A 中添加了对节点 D 的订阅 sync_type 'initialize with backup'
一旦命令 运行,节点 A 中的日志 Reader 就开始抛出以下错误:
- 进程无法在 'Node A' 上执行 'sp_MSadd_replcmds'。 (来源:MSSQLServer,错误编号:1007)
获得帮助:http://help/1007
- 同步从指定备份创建的非同步订阅所需的事务在分发服务器上不可用。
使用更新的日志、差异或完整数据库备份再次重试该操作。 (来源: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 的订阅。
这没有解决错误。
在进一步调查中,我发现分发清理作业仍在 运行ning。
可能是这导致了问题。
现在,我只是希望让现有节点 A、B 和 C 之间的 p2p 复制像以前一样再次工作。
但是,我所有的尝试都没有导致 Log Reader Agent 发生任何变化。
它被困在同样的错误中。
- 进程无法在 'Node A' 上执行 'sp_MSadd_replcmds'。 (来源:MSSQLServer,错误编号:1007)
获得帮助:http://help/1007
- 同步从指定备份创建的非同步订阅所需的事务在分发服务器上不可用。
使用更新的日志、差异或完整数据库备份再次重试该操作。 (来源:MSSQLServer,错误编号:1007)
获得帮助:http://help/1007
- IDistPut 接口已关闭。 (来源:MSSQL_REPL,错误编号:MSSQL_REPL2000)
获得帮助:http://help/MSSQL_REPL2000
- 最后一步没有记录任何消息! (来源:MSSQL_REPL,错误编号:MSSQL_REPL22037)
获取帮助:http://help/MSSQL_REPL22037
请告知解决此问题的任何步骤。
谢谢
为在 SQL 2012 年遇到此问题的任何人的利益添加解决方案:
我们就此聘请了 MS 支持。显然他们的存储过程 "sp_dropsubscriber" 有时会遗漏一些 table。在我们的例子中,此条目未从 table MSnosyncsubsetup 中删除。经过几个小时的分析后,他们发现了这一点后,便进行了备份,并删除了与新订阅者相关的行。
这修复了日志 reader 并且复制正常运行。
我正在尝试在对等集群中再添加一个节点。 在当前状态下,我有 3 个服务器 A、B 和 C。 我需要添加一个节点 D 和节点 A(仅)。 为此,我使用了以下步骤:
- 从节点 A 进行完整备份
- 复制到节点 D
- 恢复了备份
- 在两个节点中添加了出版物。
- 在发布者节点 A 中添加了对节点 D 的订阅 sync_type 'initialize with backup'
一旦命令 运行,节点 A 中的日志 Reader 就开始抛出以下错误:
- 进程无法在 'Node A' 上执行 'sp_MSadd_replcmds'。 (来源:MSSQLServer,错误编号:1007) 获得帮助:http://help/1007
- 同步从指定备份创建的非同步订阅所需的事务在分发服务器上不可用。 使用更新的日志、差异或完整数据库备份再次重试该操作。 (来源: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 的订阅。 这没有解决错误。 在进一步调查中,我发现分发清理作业仍在 运行ning。 可能是这导致了问题。
现在,我只是希望让现有节点 A、B 和 C 之间的 p2p 复制像以前一样再次工作。 但是,我所有的尝试都没有导致 Log Reader Agent 发生任何变化。 它被困在同样的错误中。 - 进程无法在 'Node A' 上执行 'sp_MSadd_replcmds'。 (来源:MSSQLServer,错误编号:1007) 获得帮助:http://help/1007 - 同步从指定备份创建的非同步订阅所需的事务在分发服务器上不可用。 使用更新的日志、差异或完整数据库备份再次重试该操作。 (来源:MSSQLServer,错误编号:1007) 获得帮助:http://help/1007 - IDistPut 接口已关闭。 (来源:MSSQL_REPL,错误编号:MSSQL_REPL2000) 获得帮助:http://help/MSSQL_REPL2000 - 最后一步没有记录任何消息! (来源:MSSQL_REPL,错误编号:MSSQL_REPL22037) 获取帮助:http://help/MSSQL_REPL22037
请告知解决此问题的任何步骤。 谢谢
为在 SQL 2012 年遇到此问题的任何人的利益添加解决方案: 我们就此聘请了 MS 支持。显然他们的存储过程 "sp_dropsubscriber" 有时会遗漏一些 table。在我们的例子中,此条目未从 table MSnosyncsubsetup 中删除。经过几个小时的分析后,他们发现了这一点后,便进行了备份,并删除了与新订阅者相关的行。 这修复了日志 reader 并且复制正常运行。