0

假设有一些数据库:P,S1,S2,S3等如何处理这种复制情况?

PS1,S2和S3(订阅者(发行者)具有一些表需要被复制(克隆和同步) )。这些表的副本将为只读。此外,该副本将被(通过外键)由内S1,S2,S3等

例如一些其它表中引用,

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

根据您的经验,您可以使用SQL Server Transactional Replication(据我所知,这是一个基于日志的复制)用于此场景?或者我应该更好地使用trigger-based replication?虽然,我想触发器可能需要在每次添加新订户(数据库)时更新。

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

谢谢:)

回答

1

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

另一件事:我喜欢将订阅的数据库视为只读,因为它减少了我的备份需求(即,如果数据库发生某种情况,我创建一个新的并重新订阅而不是恢复备份订户)。当您在订阅者处储存新颖的数据时,您不会有那么奢侈的感觉。

+0

谢谢:)正如你所说,添加新文章后有一些方法可以避免快照重新初始化:[here](http://kevine323.blogspot.ro/2011/03/adding-table-article -to-transactional.html),[there](http://ansqldba.blogspot.ro/2012/02/adding-new-article-to-existing.html)等。我希望你不介意,我会喜欢在接受答案之前听到其他一些意见。 –

相关问题