删除/创建复制表的最佳方法

时间:2014-03-04 22:16:03

标签: c# sql sql-server transactional-replication

我已将SQL Server Replication设置为复制会计应用程序的多个表。它使用事务复制和初始快照。大约有100个订阅者。

我试图找出更新复制表的最佳方法。现在,当我们进行更新时,最终用户必须运行一个实用程序,通过将数据移动到临时表,删除表,然后根据新表定义重新创建表来升级表。问题是复制的表不能被删除。

到目前为止,我已经研究并尝试了一些方法。根据我发现的内容,为了删除/创建复制表,必须删除文章,但只有在删除所有订阅时才能删除它。这意味着为了升级表,我将不得不删除所有文章和订阅,然后完全重新创建出版物。

这很痛苦,因为这需要相当多的重构。此外,主要关注的是重新复制到所有100个订阅者所需的时间。所以我想知道是否有更好的方法来处理删除/创建复制表。

谢谢, Makolyte

1 个答案:

答案 0 :(得分:1)

我会问你为什么要复制一个频繁更改架构的表。也就是说,你有几个选择。

  1. 使表格更改,使其与复制兼容。见Making Schema Changes on Publication Databases
  2. 如果无法做到这一点,请使用sp_dropsubscription从文章中删除订阅者,然后使用sp_droparticle删除文章。更改表,使用sp_addarticle重新添加文章,使用sp_addsubscription重新添加订阅者,然后运行快照代理以创建新添加文章的快照。