如何实现中央订户模型复制?

时间:2011-04-22 19:37:41

标签: sql-server sql-server-2008 replication data-warehouse

我有问题请帮助我。

假设我有三个数据库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。

2 个答案:

答案 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),该类型保证是全局唯一的。