Sql server Sql同步更新新插入的行,如何区分新行和旧行?

Sql server Sql同步更新新插入的行,如何区分新行和旧行?,sql-server,synchronization,sql-server-ce,microsoft-sync-framework,Sql Server,Synchronization,Sql Server Ce,Microsoft Sync Framework,标题可能不是很清楚,所以这里是详细的问题,我已经配置了sql server数据库并将其同步到一个确切的sql compact数据库 场景:客户端数据库(sql compact)中的存储表数据为: 身份证名称 0存储区1 1商店2 服务器数据库(sql server)中的存储表数据为: 身份证名称 0存储区1 1商店2 当我在客户机上插入数据ID为2且名称为store3的新行时 并在服务器上插入数据ID为2且名称为store4的新行 并开始同步两个表中的数据 身份证名称 0存储区1 1商店2 2层

标题可能不是很清楚,所以这里是详细的问题,我已经配置了sql server数据库并将其同步到一个确切的sql compact数据库

场景:客户端数据库(sql compact)中的存储表数据为: 身份证名称 0存储区1 1商店2

服务器数据库(sql server)中的存储表数据为: 身份证名称 0存储区1 1商店2

当我在客户机上插入数据ID为2且名称为store3的新行时 并在服务器上插入数据ID为2且名称为store4的新行 并开始同步两个表中的数据

身份证名称 0存储区1 1商店2 2层3

而我想要的是结果

身份证名称 0存储区1 1商店2 2层3 3层4

我的问题是,这可能吗?如果可能的话,有什么方法可以告诉sql,它应该插入两个新行,而不是用另一行更新一行,任何关于我的技术或代码的建议都是受欢迎的

注意:ID是PK列,是标识列。 用于同步的代码是

    SyncOrchestrator syncOrchestrator = new SyncOrchestrator();

        syncOrchestrator.LocalProvider = new SqlCeSyncProvider("SyncScope", ceCon);

        syncOrchestrator.RemoteProvider = new SqlSyncProvider("SyncScope", con);

        syncOrchestrator.Direction = SyncDirectionOrder.DownloadAndUpload;

        ((SqlCeSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed += new EventHandler<DbApplyChangeFailedEventArgs>(Program_ApplyChangeFailed);

        SyncOperationStatistics syncStats = syncOrchestrator.Synchronize();
SyncOrchestrator SyncOrchestrator=新的SyncOrchestrator();
syncOrchestrator.LocalProvider=新的SqlCeSyncProvider(“SyncScope”,ceCon);
syncOrchestrator.RemoteProvider=新的SqlSyncProvider(“SyncScope”,con);
syncOrchestrator.Direction=SyncDirectionOrder.DownloadAndUpload;
((SqlCeSyncProvider)syncOrchestrator.LocalProvider).ApplyChangeFailed+=新事件处理程序(程序\u ApplyChangeFailed);
SyncOperationStatistics syncStats=syncOrchestrator.Synchronize();
关于这个问题,请随时问我更多的澄清。
提前感谢。

您的场景实际上会引发插入冲突。您可以处理冲突并手动插入另一个冲突行


如果您在开发早期,我建议您更改密钥以避免PK冲突。

使用像主键一样的UNIQUEIDENTIFIER将为您提供此操作。

可能使用Guid作为密钥,而不是int Identification。您是否可以为了操作而详细说明一下?如ErikeJ所说,使用标准SQL数据类型UNIQUEIDENTIFIER(Guid),无法将标识符不是两侧(服务器/客户端)之一的行插入为(1,2…)。ID将更加复杂,同步框架可以区分不同的线路Hank you@AlTarba不幸的是,我无法正确地获得它,所以我不得不改变我的整个设计,手动插入ID并为每个客户端分配范围。谢谢@JuneT我实际上不得不更改我的PK以避免标识并手动输入