无效的对象合并复制

时间:2016-12-14 18:26:23

标签: sql sql-server

我有问题。

我在复制的数据库中添加了一个新表,并更新了一个视图以包含该表。

当复制运行时,由于视图尝试复制而导致无效对象错误被抛出,但该表未被复制到订阅者。

我更新了文章复制序列,以确保在使用

的视图之前复制表
sp_changemergearticle

我再次运行了快照,并将表格作为预期的文章包含在内。

当我运行复制时,我仍然会收到无效对象错误。

我无法重新初始化订阅,因为数据丢失的风险很大。

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

  

添加文章涉及将文章添加到发布,为发布创建新快照,以及同步订阅以应用新添加的文章的架构和数据。生成新快照后,分发/合并代理会将新添加的文章的架构和数据复制到订阅服务器。

我强烈建议您在自制环境中进行测试,一旦您在较低或自我环境中工作,将修复程序移至生产环境。在执行此操作之前进行备份,看看您是否可以在维护期间执行此操作,如果需要其他备份帮助,可以在其他表中执行选择插入。

Source

More information

答案 1 :(得分:0)

快照后是否将表和视图添加到订阅者?您是否向发布商添加了相同的表格和视图?我想知道你在哪里。听起来你复制了一个引用了订阅者不存在的表的视图。如果您在订阅者处更新了视图,并且稍后更新了发布者 - 不同步文章,则以下步骤将起作用。

  1. 在发布商处打开视图定义。
  2. 复制视图定义。
  3. 导航至订阅者。
  4. 将步骤2中从发布者处获得的视图定义作为alter语句执行。
  5. 下次代理运行时,应该清除错误,因为视图再次相同。
  6. 听起来最安全的做法是将表格和视图作为文章添加到发布者并重新启动快照,拉/推最新的。

答案 2 :(得分:0)

所以最终工作的是手动创建每个订户中缺少的表。

我刚创建了没有数据的Schema,复制开始并完成剩下的工作。

视图已经相同,因此无法恢复发布者视图。

很奇怪。

感谢大家的帮助!