2

我有两个 sql server 2005 数据库 -ParentDBChildDB,我想使用同步框架 2.1
ParentDB在服务器上和ChildDB客户端 m/c 上同步它们。有很多表,ParentDB但很少有表ChildDB,可以说,一个Customer表在两个数据库之间是通用的Id (column),主键设置为自动增量,我想同步这个表,我使用下面的 msdn示例中给出的方法。这种方法有效,除非我只从服务器下载或上传到服务器。

让我们来看一个场景:
1. 服务器表上有一行 Id=52
2. 两个数据库是同步的
3. 现在在Id=53ParentDB的表中插入一行 4. 同时插入另一行Id=53 的表(因为两个表都有自动增量) 现在,当我同步两个表时,两行中的任何一个都会被覆盖,具体取决于同步的方向。 我想要的是经过调整,并且保留了两行, Customer
ChildDBCustomer

Id

我应该怎么做才能解决这种冲突,如果可能,请提供伪代码。
PS:我希望当我们考虑外键约束时,场景会变得更加复杂。
提前谢谢

4

1 回答 1

2

不建议在同步环境中使用身份列作为 PK(甚至不使用 Sync Framework)(请参阅为分布式环境选择适当的主键,原因与您已经发现的相同。

如果您可以更改架构,我建议您使用不同的 PK(Guid 或 Int + ClientId)

于 2012-07-16T10:17:52.273 回答