我正在使用SyncOrchestrator或特別使用http://code.msdn.microsoft.com/windowsdesktop/Database-SyncSQL-Server-e97d1208作爲基礎並稍作修改來同步SQL Server 2008與〜6 SQL Server 2008 Express客戶端(我相信所有的R2)。據我所知,這意味着所有連接都是對等點或節點。SyncFramework 2.1更新和刪除似乎並沒有正確應用
我有2個範圍。一個是僅下載,另一個僅上載。唯一的下載範圍遍佈了身份列,主要是因爲我不知道任何更好的,仍然不能包圍我的頭介紹Guids作爲客戶端的PK。這並不重要,因爲所有的客戶都應該有大約8個左右的表格的確切副本,並且這些機器不以任何方式觸摸這些數據,只能讀取它。
僅上載作用域使用Guids,幸運的是我可以控制數據庫的那部分,並且不會有任何10個客戶端全部使用相同的身份種子可以正確地同步回服務器。這兩個示波器都使用默認配置,使用批量插入和整個9碼,所以在配置結束時我不應該做任何事情來解決這個問題。
我最初將所有設置設置爲不使用PerformPostRestoreFixup,並且初始數據庫將手動與來自主機的插入語句同步。這看起來很好,但沒有更新或刪除似乎永遠不會被應用。您可以放心地忽略這一點(僅用於歷史準確性並證明我的不合格),因爲我之後使用VS2010數據庫項目將數據庫重建爲只同步到&的模式。然後,我使用了此處列出的步驟(http://social.microsoft.com/Forums/br/syncdevdiscussions/thread/9ac6d1a1-1565-4b82-a8d8-3d4a9ff5d07b)(同步,備份,還原,調用performpostrestorefixup,在x客戶端上同步),並在我的開發箱,我設置所有這些,我可以看到更新和刪除就好了。當我將它部署到x客戶端時,我沒有看到數據庫的鏡像,因爲我認爲我應該這樣做。
初始同步會發出抱怨,並嘗試再次同步所有記錄。我相信這是預料之中的。在客戶端的ApplyChangeFailed事件期間,我將除了DbConflictType.ErrorsOccurred之外的所有內容都設置爲ApplyAction.RetryWithForceWrite。這可能是一個問題的根源,因爲我最初認爲應該這樣做來迫使客戶變更。我希望服務器總是在這種情況下獲勝,但在跟蹤過程中,在批量插入/更新調用期間,我總是看到「本地獲勝」這個短語。在重新申請之前,我可能會看到錯誤,但看起來很尷尬。
我似乎遇到的唯一問題是僅下載範圍。最初的客戶端數據庫現在大約一週,如果我使用performpostrestorefixup步驟,我沒有看到現在和之後應用的任何更新,因爲我認爲我應該這樣做。就好像SyncFx幾乎更喜歡客戶端上的空白數據庫以啓動初始同步,然後所有更新似乎都適用於沒有啓動ApplyChangesFailed事件的情況。
如果任何人之前見過或有線索去哪裏,我將不勝感激。我的大腦試圖確定它發生了什麼。我最後的努力將是將空白數據庫部署到所有客戶端,並讓他們開始同步。我在開發方面對此沒有任何問題,但我只能測試另一個客戶端,以確定它是否會做出任何不同的事情。除此之外,我不知道要做什麼,除非繼續進行手動同步,否則這將完全失敗。我認爲PerformPostRestoreFixup可以完全緩解這個問題,但我似乎在使用或不使用它時都會遇到同樣的問題,或者我沒有看到我需要的東西。
謝謝
您提到的下載範圍,您是否在ApplyChangesFailed事件上獲得任何內容,或者它不會下載任何更改? – JuneT 2012-04-20 02:42:04
對不起,我應該提到這一點。下載始終通過LocalUpdateRemoteUpdate或LocalInsertRemoteInsert啓動ApplyChangesFailed。我沒有得到的是客戶不接觸任何這些表。 有一點可能指出問題是有一個ModifiedOn(日期時間)字段,但代碼剛剛被引入來更新這個。數據庫不會將此用作rowversion,但可能有一些我沒有正確配置的模式。 – 2012-04-23 15:02:02