我有个问题,请帮帮我。
假设我有三个数据库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),以保证全局唯一。