0

我正在尝试实现从服务器到客户端的单向同步,两者都使用 Sync Framework 2.1 运行 SQLExpress 2008。我在初始同步时遇到问题。

服务器上定义了两个范围:

Scope1 包含表 A、B、C,Scope2 包含表 B、C、D

在初始同步之前,客户端数据库包含表 A、B、C 和 D(使用脚本导入),每个表都是空的。已使用服务器的范围信息为 Scope1 和 Scope2 提供数据库,并使用默认配置设置。

首次同步 Scope1 时,一切都成功。同步 Scope2 时,共享表(B、C)的每条记录都被下载并报告为LocalInsertRemoteInsert冲突。

有没有办法避免这种行为?Sync Framework 不应该知道,在 Scope1 完成同步之后,表 B 和 C 现在是最新的吗?

4

1 回答 1

1

您有重叠的范围,其中包含在另一个范围中的数据与属于另一个范围的数据相同。

有关已同步内容的信息存储在范围级别,在第一个范围同步的内容对于第二个范围不知道,反之亦然。

当您同步 Scope 1 时,它会下载数据并更新自己的同步知识,了解已同步的内容。当您同步 Scope 2 时,它不知道 Scope 1 同步了哪些内容,因此它会再次下载它们。

我会将 B 和 C 放在 Scope 1 上,并在 A 上创建 Scope 2,在 D 上创建 Scope 3。所以你只同步 B 和 C 一次。

于 2012-10-15T03:22:23.637 回答