2009-03-01 112 views
0

我正在編寫系統,需要將數據從客戶端本地託管SQL數據庫複製到託管服務器數據庫。本地數據庫中的大部分數據都被複制到活動數據庫中,儘管進行了優化以減少需要發送的實際數據量。將數據從本地數據庫複製到遠程數據庫

將數據從一個數據庫發送到另一個數據庫的最佳方式是什麼?目前我可以看到一些可能的選擇,但他們都沒有脫穎而出成爲主要候選人。

  • 複製,雖然這並不理想,但我們不能指望它在託管環境中使用的SQL版本中受支持。
  • 鏈接服務器,將數據複製直接 - 一個緩慢的,有點不安全的方法
  • Web服務來傳送數據
  • 導出我們需要爲XML,並轉移到批量要導入的服務器數據。

複製的數據進入表的副本,沒有標識字段,因此可以插入/更新數據,而不會在此方面發生任何違規。這種數據傳輸不一定要在數據庫級完成,它可以通過.net或其他工具完成。

更多信息

更新的頻率將在記錄的更新頻率完全改變。但基本思想是,如果記錄被更改,則用戶可以將其發佈到實時數據庫。或者,我們將記錄這些更改並將它們以可配置的頻率批量發送。

我們正在討論的記錄數量在覈心表(產品目錄)的核心表(產品目錄)中目前大約爲4000行,但這完全取決於我們部署的客戶端,因爲每個客戶端都有自己的產品目錄,範圍從100到1000的產品。爲了澄清,每個客戶端都在單獨的本地/託管數據庫組合中,它們不會合併成一個系統。

除了個別發佈項目外,我們還需要根據需要完成數據的完全重新同步。

系統的另一方面是從本地服務器複製的一些數據存儲在輔助數據庫中,所以我們有效地將來自兩個數據庫的數據合併到一個活動數據庫中。

+0

剛開始時,您可以通過在啓動時發出「SET IDENTITY INSERT ON」命令來保留標識字段並將其插入到其他數據庫中。請記住在完成後關閉它。 – tomfanning 2011-06-30 21:53:37

回答

0

最後,我選擇了一組觸發器來捕獲對更改日誌表的數據修改。然後有一個應用程序輪詢該表並生成XML文件,以提交到在遠程位置運行的web服務。

0

你在說多少數據?有多少'客戶'dbs在那裏?以及它需要多久發生一次?這些問題的答案將在你應該採取的道路上發揮很大的作用。

0

這個問題有幾乎無限的解決方案。爲了縮小它,你必須告訴我們一些關於你的要求和優先事項。

批量操作可能會覆蓋很多場景,您應該將其添加到列表頂部。

0

我建議使用數據轉換服務(DTS)。您可以創建一個DTS包以進行附加操作,另一個用於重新創建數據。

可以從您的代碼調用DTS包操作,因此您可能想要創建一個包裝來控制可從應用程序調用的包。

1

嗯,我很偏向。我必須承認。我想催眠你進行SQL比較的炮擊工作。我一直在面對這種無所不在的可怕的問題。我收到了SQL Compare的副本,從此不再回頭。 SQL Compare實際上是同步數據庫的軟件的一個愚蠢的名字它也將從命令行執行它,只要你有一個工作項目和所有正確的旋鈕和按鈕。當然,你只能在相當小的數據庫上做到這一點,但它確實是一個我不希望公開的工具。

我唯一關心的是你的要求,就是你從很多客戶收集產品目錄的地方。如果它們都在單獨的表格中,那麼一切都很好,但是如果它們都在同一張表格中,那麼這會使事情更加複雜。

相關問題