1

我正在使用 Microsoft Synch Service Framework 4.0 将 Sql server 数据库表与 Ipad 端的 SqlLite 数据库同步。

在 Sql Server 数据库中进行任何数据库架构更改之前,我们必须取消配置数据库表。此外,在进行架构更改后,我们重新配置表。现在在这个过程中,跟踪表(即同步信息)被删除。

我希望在重新配置后恢复跟踪表信息。如何才能做到这一点?是否可以在不取消配置的情况下进行数据库更改。

例如,应用程序是 2.0 版,同步工作正常。现在在下一个版本 3.0 中,我想做一些数据库更改。SO,在Deprovisioning-Provisioning的过程中,跟踪信息。被删除。因此,以前版本的所有跟踪信息都丢失了。我不想丢失跟踪信息。如何从以前的版本中恢复此跟踪信息。

我相信我们必须在取消配置之前编写自定义代码或触发器来存储跟踪信息。任何人都可以提出一个合适的方法或提供一些关于这个问题的有用链接。

4

2 回答 2

4

配置过程应自动为您填充跟踪表。您不必自己复制和重新加载它们。

现在,如果您认为跟踪表是框架存储之前同步的内容的位置,那么答案是否定的。

跟踪表只存储插入/更新/删除的内容。它用于更改枚举。有关先前同步内容的信息存储在 scope_info 表中。

当您取消配置时,您会清除此同步元数据。当你同步时,就像两个副本以前从未同步过一样。因此,当框架尝试应用目标上已经存在的行时,您将遇到冲突。

您可以在此处找到有关如何“破解”同步 fx 创建的对象以影响某些类型的架构更改的信息。

修改同步框架范围定义 - 第 1 部分 - 简介

修改 Sync Framework 范围定义 - 第 2 部分 - 解决方法

修改 Sync Framework 范围定义 - 第 3 部分 - 解决方法 - 添加/删除列

修改 Sync Framework 范围定义 - 第 4 部分 - 解决方法 - 将表添加到现有范围

于 2012-11-03T04:12:55.137 回答
0

假设我有一个要同步的表“用户”。将创建一个跟踪表“User_tracking”,同步后会出现一些同步信息。

当我进行任何数据库更改时,将删除此跟踪表“User_tracking”和跟踪信息。将在 Deprovisioning-Provisioning 过程中丢失。

我的解决方法:在取消配置之前,我将编写一个脚本将所有“User_tracking”数据复制到另一个临时表“User_tracking_1”中。因此所有现有的跟踪信息都将存储在“User_tracking_1”中。当我重新配置表时,将创建一个新的跟踪表“User_Tracking”。重新配置后,我会将表“User_tracking_1”中的数据复制到“User_Tracking”,然后删除表“User_Tracking_1”中的内容。UserTracking 信息将被恢复。

这是正确的方法吗...

于 2012-11-02T11:20:28.347 回答