2011-02-06 75 views
0

我有幾個客戶端數據庫使用我的Windows應用程序。將多個SqlServers同步到一個SQL Server 2005的最佳方法是什麼?

我想將這些數據發送到在線網站。

客戶端數據庫和服務器數據庫結構不同,因爲我們需要將客戶端ID列添加到服務器數據庫中的某些表中。

我用這種方式來同步數據庫;使用另一個應用程序並使用C#批量複製和事務來同步數據庫。

我的服務器數據庫sql server太忙,並行任務無法運行。

我在這個解決方案上工作: 我更新,刪除,插入後使用觸發器來保存一個表中的更改並創建sql查詢以發送Web服務來同步數據。

但我必須先發送所有數據!巨大的數據集(大於16毫克)

我認爲不能使用複製,因爲結構和主鍵不同。

+0

http://stackoverflow.com/questions/1656652/syncing-sql-server-2008-databases-over-http-using-wcf-sync-framework – 2011-02-06 07:15:20

回答

0

您是否考慮過使用SSIS來執行預定的數據同步?您可以很容易地進行數據轉換和批量插入。

+0

這是否僅通過HTTP工作? – jcolebrand 2011-02-06 06:30:55

0

正如我所瞭解您要做的,您希望允許多個客戶端應用程序將其數據與服務器同步,以便服務器擁有來自所有網站的所有數據,但每條記錄也有一個客戶端標識符,因此您可以保持追溯到源代碼。

爲什麼在獲得其他信息設置之前,您必須將所有數據發送到服務器?你應該能夠同時構建所有這些東西。另外,您不必一次上傳所有數據。每天將其展示爲一個(假設您擁有少量的客戶端數據庫),這將使您有機會依次關注每個客戶端並確保該過程已準確完成。

將所有數據合併到一個表後,您是否將數據複製回客戶端?你的尺寸信息是錯誤的,你說每個數據庫大於16GB?那麼,5個網站的累計規模將達到80GB,並將其複製到個別網站?

否則,您使用單獨的應用程序專門處理數據上傳的概述方法將是最合適的。

在更新主數據庫之後是否要升級單個模式?您可能需要ALTER TABLE併爲每條記錄添加一個bool列,並將它們標記爲「已發送」或「未發送」以跟蹤任何已更新/插入「延遲」的記錄。我有一種感覺,你將要進行滾動部署/升級,並且你正試圖弄清楚如何保持它「同步」,而不會丟失任何東西。

相關問題