使用Microsoft Sync框架更改数据库架构,而不会丢失任何跟踪表数据

时间:2012-11-02 09:41:49

标签: microsoft-sync-framework

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

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

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

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

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

2 个答案:

答案 0 :(得分:4)

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

现在,如果您认为跟踪表是框架存储先前同步的内容,则答案为否。

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

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

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

Modifying Sync Framework Scope Definition – Part 1 – Introduction

Modifying Sync Framework Scope Definition – Part 2 – Workarounds

Modifying Sync Framework Scope Definition – Part 3 – Workarounds – Adding/Removing Columns

Modifying Sync Framework Scope Definition – Part 4 – Workarounds – Adding a Table to an existing scope

答案 1 :(得分:0)

假设我有一个表“User”,我想要同步。 跟踪表将创建“User_tracking”,并且在同步后将在其中显示一些同步信息。

当我进行任何数据库更改时,此跟踪表“User_tracking”将被删除并跟踪信息。在取消配置 - 供应过程中将丢失。

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

这是正确的做法......