我正在尝试设计数据库结构。它将被安装到sql服务器的几个实例中。我需要定期合并这些数据库。
问题出在server_A
(PK)id=222
user=Tom
,但在server_B
(PK)id=222
user=Peter
。
因此,server_A
Tom
,(FK)userid=222
,Address=1 abc street
...,但(FK)userid=222
地址表中server_B
的{{1}}不同的意思。
我能想到的只是这种廉价的方法。如果我有3台服务器,我将第一台服务器中的id播放到1000000001
,第二台服务器2000000001
,第3台3000000001
....所以他们不会重复,可能适合一个小时间的项目?而且我不需要使用Guid / uniqueidentifier来进一步使问题复杂化?
这种情况的常见/正确方法是什么?
答案 0 :(得分:1)
您可以添加server_id
作为外键,该外键现在是复合主键的一部分,与原始主键一起使用。每个服务器都有自己的ID。
答案 1 :(得分:0)
使用SQL Server的合并复制功能,它将为您处理此问题。
答案 2 :(得分:0)
使用GUID而不是int作为主键。即使在不同的系统上生成它们也是独一无二的。
我不是SQL Server Merge Replication的专家,但根据this post,它无法自动解决冲突的PK,因此最好避免首先出现PK冲突。