如何处理此复制方案?

时间:2013-07-16 06:37:53

标签: sql-server database replication database-replication transactional-replication

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

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

例如,

  • P表 P.O1 P.O2 。 S1将具有 S1.O1_copy,S1.O2_copy S1.OTHER ,其中S1.OHER引用S1.O1_copy。

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

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

谢谢:)

1 个答案:

答案 0 :(得分:1)

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

另一件事:我喜欢将订阅的数据库视为只读,因为它减少了我的备份要求(即如果数据库出现问题,我会创建一个新的并重新订阅而不是恢复备份订户)。当你在订户中存储新数据时,你将不会有这种奢侈。