0

假设有一些数据库:P、S1、S2、S3 等。

P(发布者)有一些表需要在S1、S2 和 S3(订阅者)上复制(克隆和同步)。这些表的副本将是只读的。此外,副本将被 S1、S2、S3 等中的一些其他表引用(通过外键)。

例如,

  • P 有表P.O1P.O2。S1 将具有S1.O1_copy、S1.O2_copyS1.OTHER,其中 S1.OTHER 引用 S1.O1_copy。

根据您的经验,可以在这种情况下使用SQL Server 事务复制(据我所知,这是基于日志的复制)吗?还是我应该更好地使用基于触发器的复制?不过,我认为每次添加新订阅者(数据库)时都可能需要更新触发器。

P 中需要复制的表很少更新,但更新操作需要是事务性的,以确保数据一致性(从副本中读取的任何内容都应返回所请求数据的最新快照)。

谢谢 :)

4

1 回答 1

1

您可以为此使用事务复制。我要提出的警告都涉及初始化或重新初始化订阅者。添加文章时,默认行为是将对象放在订阅者处。如果您的表具有指向复制表的外键,则删除将失败。当然,您可以解决这个问题,但需要注意这一点。

另一件事:我喜欢将订阅的数据库视为只读的,因为它减少了我的备份需求(即,如果数据库发生问题,我创建一个新的并重新订阅,而不是恢复订阅者的备份)。当您在订阅者处存储新数据时,您将不会在这里享受这种奢侈。

于 2013-07-16T21:05:06.680 回答