2009-07-25 72 views
1

帶SQL 2005的Microsoft Sync Framework?可能嗎?似乎暗示OOTB提供者使用SQL2008功能。 我正在尋找一些關於同步項目的快速獲勝。 客戶端應用程序將在幾天內脫機。 將有一箇中央服務器,必須是SQL Server 2005. 我可以使用.net 3.5。智能客戶端應用程序的同步框架注意事項

基本上,客戶端應用程序可以在一週內脫機。當它恢復在線時,它需要同步它的數據。但好處是數據只需要推送到服務器。同步回客戶端的東西只是客戶端永遠不會改變的查找數據。所以這意味着我不關心同步衝突。

爲了簡化你的情況,這個智能客戶端下線,用戶調查一些觀察數據。他們將數據輸入到系統中。筆記本電腦重新連接到網絡時,它會將所有數據同步到服務器。還有其他客戶也在做同樣的事情,但沒有人會觸及彼此的數據。然後在服務器上有一些報告查看推送到服務器的數據。這也需要使用ClickOnce。

我最大的擔憂是客戶端處於脫機狀態時存在臨時版本。此版本可能需要在數據庫中添加一個新字段,並在調查中填寫一個新字段。 顯然,新字段將爲空,因爲我們無法更新舊數據,所以可以設置爲假設。但是當客戶端連接並且它的本地數據模式和服務器模式不匹配時,同步框架能夠處理這個問題嗎?數據被推送到服務器後,它將在本地丟棄。

希望我的問題有道理。

回答

1

我一直在使用微軟同步框架來處理碰撞的應用程序,而且它很慘。 * .sdf文件被鎖定用於某些模式更改(如刪除列等)。

您的場景聽起來像Sync Framwork將爲您工作,開箱即用...只是不強制任何參照完整性,因爲同步框架將導致在這些情況下插入問題。

就更新模式而言,如果您遵循Sync Framework論壇,則會指示您按照表應該查看結尾的方式創建臨時表,然後複製數據,然後刪除舊錶。一旦完成,然後繼續,將新表重命名爲它應該是的,然後重新連接SQL Server CE中允許您處理同步類的東西。

恕我直言,我將努力從我的應用程序中刪除同步功能,因爲它不僅僅是一個援助的障礙。

+0

謝謝,欣賞反饋。另外,我發現ClickOnce會自動更新您的架構,無論是否使用同步框架。在我的情況下,我只在中央服務器上添加新的空字段,所以這個作品可以對我很好用 – DarkwingDuck 2009-07-28 11:12:53

+0

ClickOnce如何結束自動更新數據庫?我還沒有看到這種情況,我非常感興趣。 – 2009-07-28 19:01:33

+0

因此,我發現ClickOnce只會將一些更改安全地部署到您的緊湊型數據庫。例如,刪除一列工作正常。但是,添加列實際上會導致所有本地數據被刪除。所以我做的是在'同步'過程中,我讓應用程序發佈其數據,然後調用System.Deployment.CurrentDeployment類,該類有靜態方法來更新部署。這對我來說很有幫助。但是,如果您使用WCF作爲數據庫的代理(這是一個支持的Sync框架方案),那麼它可能無法很好地工作,因爲您需要對合同進行版本化。 – DarkwingDuck 2009-08-03 09:49:56