0

我在尋找關於如何在兩個數據庫之間同步數據的建議和建議。SQL Server 2008 Express和VFP表之間的同步

第一個數據庫是運行在斷開連接的筆記本電腦(無網絡或互聯網訪問)上的SQL Server 2008 Express。第二個數據庫(主)是在服務器上運行的VFP 9.0。

當用戶在網絡上連接筆記本電腦時,我希望同步過程能夠通過。

除了不同的數據庫引擎,我有以下項目要考慮到:

  1. 表格沒有必要具有相同的結構
  2. 的主鍵是不一樣的(GUID在SQL Server中,通常是VFP中的字符字段的組合)
  3. 表的同步必須按照一定的順序完成以尊重父子關係
  4. 在SQL Server端的某個插入上,新的主鍵必須生成並同步ronised在VFP表
  5. 驗證一束必須作出與一些來自用戶的反饋,所以有時需要
  6. 並非所有記錄需要在SQL Server上進行同步
  7. 一些記錄需要的syncronisation後刪除
  8. 需要考慮刪除的記錄從兩側
  9. 最小的改動需要在VFP數據庫上進行

現在有我forgotting可能其他的點,但我THI你知道我面臨的挑戰。我現在的猜測是我需要構建一個自定義同步模塊,但是在我繼續之前我想要你的輸入,以防我忽略了一些選項並獲得一些關於如何處理這些問題的提示。

我很快看到Microsoft Sync Framework,但是由於我有所有的限制以及沒有VFP客戶端已經構建(AFAIK)的事實,我認爲這不會有很大的幫助。

預先感謝您的反饋意見。

更新:筆記本電腦應用程序是C#WinForm應用程序並且正在使用SQL Server 2008 Express。

回答

1

情況和需求的複雜性使我相信你需要編寫一個Visual FoxPro應用程序。 Visual FoxPro輕鬆連接到SQL Server 2008數據。代碼的複雜性在於匹配需求並確定需要同步的數據,而不是語法。 Visual FoxPro的優勢在於數據操作語言,並且可以連接到幾乎任何數據源(本機DBF,ODBC,ADO和XML)。

SQL Server可以通過VFP 9 OLE DB驅動程序讀取VFP 9數據。您可以編寫T-SQL存儲過程以獲取VFP數據。不知道它如何識別連接到網絡的筆記本電腦。

另一種方法是使用SQL Server XML Diffgrams。我不是這方面想象力的專家,但它是你可以研究的東西。

由於我的專業知識與Visual FoxPro相比,我會發現通過其他方式更容易,但這只是我。你必須使用你擁有的項目資源技能。

VFP通過連接(DSN,ConnectionString)以及涉及SQL Passthrough(SQLConnect(),SQLExec()和SQLDisconnect()),CursorAdapters,Remote Views或三者的組合的任何技術來讀寫SQL Server數據。

Visual FoxPro程序還可以識別Windows事件,如連接到網絡。應用程序可以安裝在每檯筆記本電腦上並運行以識別Windows事件。一旦引發事件,應用程序可以嘗試連接到SQL Server數據庫(可能它正在連接到沒有SQL Server或不同網絡的網絡)。

連接後,它將運行檢查和同步數據庫的邏輯。

聽起來像你沒有很多的控制寫在筆記本電腦上的VFP 9數據的應用程序。如果您確實可以控制應用程序寫入VFP 9數據庫,則可以考慮將應用程序更改爲在筆記本電腦上寫入SQL Server Express實例,然後使用SQL Server複製來管理同步。儘管這並不是一件小事,但SQL Server複製在每個版本中都變得更好,但確實會導致數據庫管理員脫髮。這條路線絕對有很多工作要做。

裏克Schummer 的Visual FoxPro MVP

+0

感謝您的回覆。對不起,但我忘了提及筆記本電腦應用程序是我編寫並使用SQL Server 2008 Express的C#WinForm應用程序。我非常瞭解VFP,因爲我已經使用了10多年了,但由於種種原因,我們正試圖擺脫它。 – izokurew 2009-06-08 13:06:48

0

我會鼓勵你再看看MS同步框架。我們有一種情況,我們希望偶爾將連接的C#客戶端應用程序與Java/Oracle後端同步。您可以使用C#客戶端的同步框架提供程序,併爲後端實現您自己的KnowledgeSyncProvider自定義子類。這會讓你在中途停下來,並向你展示一個很好的模式來申請休息。

相關問題