数据库与重复的PK / FK同步

时间:2012-05-25 12:21:29

标签: sql sql-server-2008 database-design

我正在尝试设计数据库结构。它将被安装到sql服务器的几个实例中。我需要定期合并这些数据库。

问题出在server_A (PK)id=222 user=Tom,但在server_B (PK)id=222 user=Peter

因此,server_A Tom(FK)userid=222Address=1 abc street ...,但(FK)userid=222地址表中server_B的{​​{1}}不同的意思。

我能想到的只是这种廉价的方法。如果我有3台服务器,我将第一台服务器中的id播放到1000000001,第二台服务器2000000001,第3台3000000001 ....所以他们不会重复,可能适合一个小时间的项目?而且我不需要使用Guid / uniqueidentifier来进一步使问题复杂化?

这种情况的常见/正确方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以添加server_id作为外键,该外键现在是复合主键的一部分,与原始主键一起使用。每个服务器都有自己的ID。

答案 1 :(得分:0)

使用SQL Server的合并复制功能,它将为您处理此问题。

答案 2 :(得分:0)

使用GUID而不是int作为主键。即使在不同的系统上生成它们也是独一无二的。

我不是SQL Server Merge Replication的专家,但根据this post,它无法自动解决冲突的PK,因此最好避免首先出现PK冲突。