【发布时间】:2008-10-11 13:40:09
【问题描述】:
我最近刚刚为我的订阅者数据库设置了自定义复制,如another post here 中所述。基本上,当发布者向订阅者推送一条新记录时,存储过程也会将复制时间插入到表中的额外列中,并将新记录插入到日志表中。
我在尝试将日志表复制回主发布数据库时出现问题。这就是我所做的:
- 在日志表所在的数据库中,我设置了一个新的事务复制,并将其设置为创建快照。
- 创建发布后,我会创建一个新的推送订阅,并将其设置为立即初始化。
- 订阅创建后,我检查了同步状态,确认快照应用成功。
现在是奇怪的部分:如果我使用 SQL Server Management Studio 手动将记录添加到日志表,该记录将被很好地复制。如果记录是由自定义复制存储过程添加的,则不会。状态将始终显示“没有可用的复制交易”。
我不知道出版物为什么会这样:我真的不明白它如何以不同的方式处理自定义复制存储过程插入的数据。
谁能解释我做错了什么?
更新:几个月前我终于有了这个问题的答案,只是我从来没有时间更新这个问题。我们必须记录给 Microsoft 的支持电话,但我们得到了一个可行的解决方案。
回答:要解决此问题,在添加订阅时, 您需要运行如下脚本:
sp_addsubscription @publication = 'TEST', ..., @loopback_detection = 'false'
解决方案的关键是上面显示的最后一个参数。默认情况下,生成的订阅脚本不会有这个参数。
【问题讨论】:
标签: sql-server sql-server-2005 replication