我有一个使用 SQL 2005 合并复制的数据库,并且已经将数据插入到订阅者中,而这些数据从未传递给发布者。我相信在 14 天的保留期内发生了冲突,我不再看到它了。我可以手动将它们添加到发布者中吗?任何想法或将我引导到一个好的链接表示赞赏。谢谢你。
问问题
866 次
2 回答
0
如果冲突发生在当前保留期之前,我认为没有任何魔法可以将其恢复。您可以删除订阅并重新创建它(同时手动同步增量)吗?可能是最安全的行动。
于 2012-06-18T22:04:28.883 回答
0
在我回答这个问题之前,请注意以下方向可能非常危险,必须非常小心。这个解决方案对我有用,因为有问题的表只写给一(1)个订阅者,没有其他地方。基本上我所做的是:
- 暂停复制(我实际上禁用了我正在处理的订阅者的复制作业并在完成后启用它)
- 将表的标识插入设置为 ON(在表上使用自动标识)
- 将表更改为NOCHECK CONSTRAINT repl_identity_range_(此处为一些十六进制值)
- 禁用了表的 MSmerge_ins_(some Hex Value here) 触发器。(确保在完成时启用此功能)!!!
- 插入了行
- 将 Indentity_Insert 设置为关闭
- 启用 MSmerge_ins_(some Hex Value here) 触发器
- 更改表以检查约束 repl_identity_range_(此处为一些十六进制值)
您可以通过运行 sp_help 找到 repl_identity_range 约束的名称。我建议您在完成后使用 Red Gates 数据比较等工具进行验证,以确保完成。根据您的情况,您可能还必须在所有订阅者处手动插入数据。仅供参考-我必须在不中断最终用户的情况下在生产数据库上执行此操作。请谨慎使用。
于 2012-06-19T15:05:56.600 回答