SQL Server 2008复制(避免重新初始化)

时间:2009-11-25 23:12:29

标签: sql-server sql-server-2008 replication

我正在尝试确定是否有更好的方法来处理复制,而不是我们当前正在做的事情。

我们基本上试图确定两件事:

  
      
  1. 有没有办法将表中的现有列添加到复制中   没有重新初始化整体   出版物
  2.   
  3. 您是否可以选择要重新初始化的特定文章而不是全部   出版物中的文章?
  4.   

(我对复制有点新......试图加快速度,所以如果我的术语没有意义,我会道歉)

现在我们有大约30种出版物,因此如果有任何必须重新初始化,那么影响很小......因为我们的几张表非常庞大。我们宁愿只有几个出版物。

非常感谢任何想法。

更新

当我们尝试在文章中添加列时,我们收到消息:

  

您已更改了一个或多个   需要全部的属性   订阅要重新初始化。   保存这些更改标记每个   支持自动的订阅   重新初始化要重新初始化   从下一次的快照   分发代理运行。你必须跑   快照代理生成   快照。

我们希望避免重新初始化所有订阅..我们正在使用事务复制...我们再次希望将现有列添加到现有发布,而无需重新初始化所有订阅。

1 个答案:

答案 0 :(得分:5)

什么样的复制?快照,合并,交易,点对点?

1)是的。见Making Schema Changes on Publication Databases

  
      
  • 向表中添加新列   在现有列中包含该列   发布,执行ALTER TABLE    添加默认情况下   然后将列复制到所有列   订户。该列必须允许   NULL值或包含默认值   约束
  •   
  • 要包含现有列   现有出版物,使用   sp_articlecolumn(Transact-SQL),   sp_mergearticlecolumn(Transact-SQL),   或出版物属性 -    对话框。
  •   

2)这取决于复制类型。见Reinitializing a Subscription

  

重新初始化订阅涉及   应用一个或多个的新快照   一个或多个订阅者的文章:   事务和快照复制   允许个别文章   重新初始化;合并复制   需要所有文章   重新初始化