我正在尝试确定是否有更好的方法来处理复制,而不是我们当前正在做的事情。
我们基本上试图确定两件事:
- 有没有办法将表中的现有列添加到复制中 没有重新初始化整体 出版物
- 您是否可以选择要重新初始化的特定文章而不是全部 出版物中的文章?
醇>
(我对复制有点新......试图加快速度,所以如果我的术语没有意义,我会道歉)
现在我们有大约30种出版物,因此如果有任何必须重新初始化,那么影响很小......因为我们的几张表非常庞大。我们宁愿只有几个出版物。
非常感谢任何想法。
更新
当我们尝试在文章中添加列时,我们收到消息:
您已更改了一个或多个 需要全部的属性 订阅要重新初始化。 保存这些更改标记每个 支持自动的订阅 重新初始化要重新初始化 从下一次的快照 分发代理运行。你必须跑 快照代理生成 快照。
我们希望避免重新初始化所有订阅..我们正在使用事务复制...我们再次希望将现有列添加到现有发布,而无需重新初始化所有订阅。
答案 0 :(得分:5)
什么样的复制?快照,合并,交易,点对点?
1)是的。见Making Schema Changes on Publication Databases:
- 向表中添加新列 在现有列中包含该列 发布,执行ALTER TABLE 添加默认情况下 然后将列复制到所有列 订户。该列必须允许 NULL值或包含默认值 约束
- 要包含现有列 现有出版物,使用
sp_articlecolumn
(Transact-SQL),sp_mergearticlecolumn
(Transact-SQL), 或出版物属性 - 对话框。
2)这取决于复制类型。见Reinitializing a Subscription:
重新初始化订阅涉及 应用一个或多个的新快照 一个或多个订阅者的文章: 事务和快照复制 允许个别文章 重新初始化;合并复制 需要所有文章 重新初始化强>