sql server—如何实现中央订阅者模型复制



我有个问题,请帮帮我。

假设我有三个数据库Db1、Db2、DbCenter,并且所有数据库中都存在tbl_country。

tbl_country在Db1中有以下记录:

tbl_country
Id    Name
1       US
2       Germany

Db2中的tbl_country有以下记录:

tbl_country
Id        Name
1       Australia
2       Italy

和Db1和Db2中合并的tbl_country记录必须在DbCenter中合并,

所以DbCenter中的tbl_country有以下条目:

tbl_country
Id    Name
 1      Us
 2      Germany
 3      Australia
 4       Italy

所有表中的"id"列都是主键和标识。

如何处理DbCenter的最后一个tbl_country中添加的两个Db1和Db2的记录?

我正在使用事务性复制。设置Db1和Db2为发布者,指定DbCenter为订阅者,并在Db2的文章属性中设置"使用name时的动作"为"保持现有对象不变",但当"id"列中的记录相同时,会删除DbCenter中的记录并替换为新的记录。Db1和Db2是Sql server 2000版本,Db3是Sql server 2008R2。

维护DbCenter数据库中的原始键值,以及指定它来自哪个数据库的元数据。然后生成将用作PK的代理键。这样,您就可以对每个Country记录进行唯一引用,并可以链接回源信息。

例如

: -

ID_SK SOURCE_ID SOURCE_DB NAME
1     1         Db1       US
2     2         Db1       Germany
3     1         Db2       Australia
4     2         Db2       Italy 

如果Db1和Db2有重叠的主键值,我认为没有任何方法可以做到这一点。如果您可以控制模式,并且能够更改它,那么您可能希望将主键更改为uniqueidentifier类型(而不是int),以保证全局唯一。

相关内容

  • 没有找到相关文章

最新更新