【问题标题】:Best way to drop/create a replicated table删除/创建复制表的最佳方法
【发布时间】:2014-03-04 22:16:03
【问题描述】:

我设置了 SQL Server 复制来复制会计应用程序的多个表。它使用带有初始快照的事务复制。大约有 100 名订阅者。

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

到目前为止,我已经研究并尝试了一些事情。从我发现为了删除/创建复制表必须删除文章,但只有在删除所有订阅时才能删除它。这意味着为了升级表,我必须删除所有文章和订阅,然后完全重新创建发布。

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

谢谢, 马科莱特

【问题讨论】:

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


【解决方案1】:

我会质疑为什么您要复制如此频繁地更改架构的表。也就是说,您有几个选择。

  1. 以与复制兼容的方式更改表。见Making Schema Changes on Publication Databases
  2. 如果这不可能,请使用 sp_dropsubscription 从文章中删除订阅者,并使用 sp_droparticle 删除文章。更改您的表,使用 sp_addarticle 重新添加文章,使用 sp_addsubscription 重新添加订阅者,然后运行快照代理以创建新添加文章的快照。

【讨论】:

  • 第一个选项需要大量更改旧的转换工具。使用第二个选项,由于快照无效,是否需要重新初始化所有订阅者?还是因为它是事务复制,所以他们会没事吗?
  • 一旦您删除订阅者,他们都需要重新初始化,因为他们不再订阅该出版物。
猜你喜欢
  • 1970-01-01
  • 2020-08-03
  • 2018-03-13
  • 2012-10-22
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
相关资源
最近更新 更多