2012-11-02 101 views
0

我正在使用Microsoft Synch Service Framework 4.0在Ipad端同步SqlLite數據庫的Sql Server數據庫表。使用Microsoft Sync框架進行數據庫架構更改而不丟失任何跟蹤表數據

在Sql Server數據庫中進行任何數據庫模式更改之前,我們必須取消設置數據庫表。在模式更改之後,我們重新提供表格。 現在在這個過程中,跟蹤表(即同步信息)被刪除。

我希望在重新配置後恢復跟蹤表信息。 這怎麼辦?是否可以在不取消配置的情況下進行數據庫更改?

例如,應用程序在版本2.0中,同步工作正常。現在在下一個版本3.0,我想做一些數據庫更改。 SO,在取消配置 - 供應的過程中,跟蹤信息。被刪除。因此,以前版本的所有跟蹤信息都會丟失。我不想丟失跟蹤信息。我如何從以前的版本恢復此跟蹤信息。

我相信我們將不得不編寫一個自定義代碼或觸發器來在取消配置之前存儲跟蹤信息。任何人都可以提出一個合適的方法或提供一些有關這個問題的有用鏈

回答

0

可以說我有一張表「用戶」,我想同步。 一個跟蹤表將被創建爲「User_tracking」,同步後會出現一些同步信息。

當我進行任何數據庫更改時,此跟蹤表「User_tracking」將被刪除並跟蹤信息。將在取消配置 - 配置過程中丟失。

我的解決方法: 在取消配置之前,我將編寫一個腳本將所有「User_tracking」數據複製到另一個臨時表「User_tracking_1」。因此所有現有的跟蹤信息都將存儲在「User_tracking_1」中。當我重新配置表格時,將創建一個新的trackin表「User_Tracking」。 重新配置後,我會將表格「User_tracking_1」中的數據複製到「User_Tracking」,然後從表格「User_Tracking_1」中刪除內容。 用戶跟蹤信息將被恢復。

這是正確的做法...

2

供應過程應自動填充您的跟蹤表。你不必自己複製和重新加載它們。

現在,如果您認爲跟蹤表是框架存儲之前同步的內容,則答案是否定的。

跟蹤表只存儲插入/更新/刪除的內容。它用於更改枚舉。關於先前同步內容的信息存儲在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

+0

謝謝六月..這意味着我將有一些定製的存儲過程和觸發器。 (如您的鏈接中所述)。所以,無論何時我需要進行任何數據庫模式更改,我都可以直接執行這些更改而無需取消配置。這樣,同步元數據將不會被擦除。 – Marcus25

+0

是的,但請注意,如果您更改PK或添加/刪除過濾器,則必須更新跟蹤表。由於您使用的是Sync Fx工具包,因此您必須更新代碼中的實體。 – JuneT