【发布时间】:2013-07-31 02:01:23
【问题描述】:
将文章(表)添加到发布,然后运行快照代理应该只为新文章创建快照。但是,有时复制会决定重新对出版物中的每篇文章进行快照。所以,我有两个问题:
- 为什么有时如果只添加一篇文章,所有文章都会重新快照?
- 是否可以在快照代理下次运行时(例如在 DMV 或系统表中)预先知道哪些文章被标记为要进行快照?
非常感谢。
【问题讨论】:
标签: sql-server transactional-replication
将文章(表)添加到发布,然后运行快照代理应该只为新文章创建快照。但是,有时复制会决定重新对出版物中的每篇文章进行快照。所以,我有两个问题:
非常感谢。
【问题讨论】:
标签: sql-server transactional-replication
如果有记忆,此行为由发布上的两个设置控制:immediate_sync 和 allow_anonymous。为了获得您想要的行为(即添加一篇文章并拥有一篇文章的快照),这两个设置都需要为 false。幸运的是,您可以在已发布数据库的syspublications 表中找到两者的值,并使用sp_changepublication 更改它们
【讨论】:
这看起来很奇怪,但我在添加文章时看到了这一点,解决方案是取消文章添加,因为它要求创建完整快照。然后运行snapshot agent应该会发现它没有任何关系,然后添加文章。我知道很奇怪,但是经过 7 年的复制经验,我发现这对我来说每次都有效。根据 BOL,Ben Thul 在 immediate_sync 上也是正确的。
【讨论】: