1

我們有一個應用程序將採集數據並將其存儲在使用Microsoft SQL Server Compact的本地WinXP PC中。我們希望將這些數據彙總到一個完整的SQL Server中進行報告和存檔。數據傳輸需要相當連續(即不批量處理),儘管一些延遲是可以接受的(一分鐘或兩個最大)。推薦的數據彙總框架

數據是從收集器到服務器的單向推送。收集器永遠不需要知道其他收集器正在做什麼,主服務器永遠不會將數據更新回收集器。目前的計劃是爲5位收藏家設計的,但它的可擴展性基本上是無界限的。

我們必須假設我們會「大部分連接」,但我們無法保證從收集器到服務器的連接。如果服務器或網絡出現故障,我們仍將繼續收集數據,並在服務器再次可達時將數據恢復。

理想情況下,我們希望一旦我們完成基礎架構工作後,非編程工程師可以設置一個解決方案。因此,我們很好地編寫了一些代碼和嚮導,但最終用戶不能假定知道編寫代碼的任何內容,儘管他們具有合理的計算機技術知識。

現在我們有這個兩名技術候選人:

  1. SQL複製
  2. Microsoft同步服務

我們與第一經驗不多,但我們知道,建立訂閱,等在SQL Server中是痛苦的,調試它們並不好玩,所以我們試圖找到一個替代方案。

我們對#2幾乎一無所知,只知道它已被建議作爲獲取設備數據到服務器的替代方案。

有沒有人在這種情況下有這方面的經驗,或者有這兩種技術或者我們沒有想過他們可以分享的任何東西?收集器上的SQL Compact是一個固定的要求。服務器上的SQL Server不是必需的,但由於客戶已經擁有它,因此需要。

回答

0

我結束了與選項3:都沒有。相反,我們只是週期性地(用戶可調,但默認爲5秒)使用SqlBulkCopy class複製記錄。這很有效,因爲它允許我們傳入一個IDataReader,因此我們使用TableDirect在本地打開表,從遠程表中尋找最高的RowID,然後將讀取器傳遞給WriteToServer類。

0

嘗試同步並告訴我們它是怎麼回事:) 我看到一個MSFT事件,這傢伙說:「我添加了這3行代碼,一切都剛剛同步...... wooohhooo」。

聽起來像去找我的路。

0

複製的問題在於,當您的模式更改時,您將在每個客戶端上執行手動工作以重新啓動並運行復制。我沒有使用Sync Services的經驗,但我會問同樣的問題:模式更改時會發生什麼?如果您必須碰觸每個客戶,那可能是一個問題。

1

在完全發佈之前,我已經使用了Microsoft Sync Services。我喜歡它,它看起來非常適合您的應用程序。

如果您想讓自己的生活變得輕鬆,我建議您在要與主服務器同步的所有表上使用GUID(SQL Server uniqueidentifier)作爲主鍵。這樣可以防止碰撞,以及大量額外的編碼。

一個警告:我聽說Sync Services在第一個版本發佈後發生了顯着變化,所以我的信息可能已過時。