将表添加到复制的DB

时间:2018-04-23 15:20:46

标签: sql sql-server

我最近向一个当前正在进行事务复制的数据库添加了两个新表。如果没有删除并重新创建整个出版物,有没有办法快速将这两个新表添加到现有出版物中?我必须拍一张全新的快照吗?我只是问,因为这是一个生产数据库,不能停止到夜间,锁定将导致重大问题。 谢谢 - 特拉维斯

1 个答案:

答案 0 :(得分:1)

DISCALIMER:所有复制都有可能在读取整个日志时锁定整个数据库。变更应在生产之外进行彻底测试,并在数小时后实施。

对于基本事务复制,您可以对每个表使用sp_addarticlesp_addsubscription,而不会影响现有订阅。如果您使用sp_addsubscription @article = 'all';(默认)初始化当前订阅,则可能不允许您添加其他文章,在这种情况下,您将不得不删除现有订阅或创建新发布。

即使您必须删除现有订阅,也不一定要为现有订阅创建快照,但您负责保持数据同步。您应该使用触发器或其他方法在删除订阅之前锁定更改,并使用sp_addsubscription @sync_type='replication support only';重新创建它们。如果以这种方式创建所有订阅,则不会生成快照。如果仅使用@sync_type='automatic'订阅新文章,则只有那些文章将出现在新快照中。之后,您应该验证发布者和订阅者之间的数据完整性。