1

我有一个使用 SQL 2005 合并复制的数据库,并且已经将数据插入到订阅者中,而这些数据从未传递给发布者。我相信在 14 天的保留期内发生了冲突,我不再看到它了。我可以手动将它们添加到发布者中吗?任何想法或将我引导到一个好的链接表示赞赏。谢谢你。

4

2 回答 2

0

如果冲突发生在当前保留期之前,我认为没有任何魔法可以将其恢复。您可以删除订阅并重新创建它(同时手动同步增量)吗?可能是最安全的行动。

于 2012-06-18T22:04:28.883 回答
0

在我回答这个问题之前,请注意以下方向可能非常危险,必须非常小心。这个解决方案对我有用,因为有问题的表只写给一(1)个订阅者,没有其他地方。基本上我所做的是:

  1. 暂停复制(我实际上禁用了我正在处理的订阅者的复制作业并在完成后启用它)
  2. 将表的标识插入设置为 ON(在表上使用自动标识)
  3. 将表更改为NOCHECK CONSTRAINT repl_identity_range_(此处为一些十六进制值)
  4. 禁用了表的 MSmerge_ins_(some Hex Value here) 触发器。(确保在完成时启用此功能)!!!
  5. 插入了行
  6. 将 Indentity_Insert 设置为关闭
  7. 启用 MSmerge_ins_(some Hex Value here) 触发器
  8. 更改表以检查约束 repl_identity_range_(此处为一些十六进制值)

您可以通过运行 sp_help 找到 repl_identity_range 约束的名称。我建议您在完成后使用 Red Gates 数据比较等工具进行验证,以确保完成。根据您的情况,您可能还必须在所有订阅者处手动插入数据。仅供参考-我必须在不中断最终用户的情况下在生产数据库上执行此操作。请谨慎使用。

于 2012-06-19T15:05:56.600 回答