我有问题请帮助我。
假设我有三个数据库Db1,Db2,DbCenter和tbl_country存在于所有数据库中。
Db1中的tbl_country有以下记录:
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的文章属性中将“如果正在使用的名称中的操作”操作设置为“保持现有对象不变”,但是它会删除DbCenter中的记录并用新的记录替换它们。 “id”列中的记录是相同的。 Db1和Db2是Sql server 2000版本,Db3是Sql server 2008R2。
答案 0 :(得分:1)
维护DbCenter数据库中的原始密钥值,以及指定它来自哪个数据库的元数据。然后生成将用作PK的代理键。这样,您可以为每个国家/地区记录提供唯一的引用,以及链接回源信息的方式。
例如: -
ID_SK SOURCE_ID SOURCE_DB NAME
1 1 Db1 US
2 2 Db1 Germany
3 1 Db2 Australia
4 2 Db2 Italy
答案 1 :(得分:0)
如果Db1和Db2具有重叠的主键值,我认为没有办法做到这一点。如果您可以控制架构并且能够对其进行更改,则可能需要将主键更改为uniqueidentifier类型(而不是int),该类型保证是全局唯一的。