3

我有兩臺SQL服務器,我需要完全相同。自動同步應該每天發生幾次。 這兩個服務器之間沒有「直接」連接,所以沒有連接數據庫等(它們在完全不同的機器,網絡,域之間以及防火牆之間等)您可以使用Internet,但Web服務,FTP等。同步兩個Diff SQL Server之間的數據

CopyFromDB包含大量表,但只有大約20個表(僅數據,現在沒有模式更改)應與CopyToDB同步。每天只有大約一半的表格會有新的/更新的行。其他人每年幾次。我猜現在每天只有幾千行。然而,這可能會在未來增長,每天大約10萬行。所以,我猜可能沒有太多數據。

而且(現在,可能會改變)數據只應該從CopyFromDB同步到CopyToDB。如果它不會因爲有人在CopyFromDB上的表上添加額外的列而「不中斷」,而且該新的col不應該自動同步到CopyToDB。 (只有應該同步的列位於CopyToDB,可能有其他列不應該同步)

它應該做插入,更新或插入。在最壞的情況下,我想它可以刪除和插入,但我不喜歡這樣。 (當然有FK等等,所以數據必須以正確的順序插入)

現在只有一個「CopyToDB」,但是這可能會增加。 解決方案應該也很簡單,不要太複雜。 :-)

我的問題是;什麼是最好的方式來實現這一目標?下面我有幾個想法。

  • WS在CopyToDB端,從CopyFromDB端通過服務或其他東西調用?推送數據,只有自上次同步以來的更改。
  • CopyToDB端的FTP,它接受帶有更改的「sql」文件。像插入/更新/刪除。這由CopyFromDB推到那裏。
  • 還有別的嗎?內置的工具已經做到了這一點?還是3d零件工具?像紅門SQL數據比較,只能自動。

謝謝你的想法和/或答案!


我已經在論壇中搜索了我的問題。但是我只能在兩臺服務器之間存在某種「直接」連接的情況下才能找到問題,或者執行備份/恢復。但如果問題已經得到解答,我請求你原諒,你能告訴我在哪裏嗎? :)

+0

嗯,我還沒有找到任何「捷徑」,所以我選擇了第一種方式,使用WS。 (sql-file-way失敗,也許可以解決它,但它花費了太多時間) 在CopyFromDB上,每個表都有一個DateTime-「update」列。我用它來檢查新數據。然後將新數據放入DTO,序列化,壓縮,併發送到CopyToDB端的WS。 CopyToDB獲取數據,如果數據已經存在,則進行更新或者執行插入操作。那麼,它有更多的邏輯,但基本上這是如何解決它。 – Rolle 2010-10-15 18:56:04

回答

0
+0

謝謝!我從來沒有使用快照,我會研究這個。但是這需要所有的數據?不僅是自上次以來的變化,我猜? – Rolle 2010-10-03 18:43:50

+0

我看着快照,我認爲它不適合我。它拍攝了整個數據庫的快照(我想我可以忽略它),還需要源數據庫或需要鏡像。對於我的問題,我認爲快照是太多的工作來讓它工作。 (在我的情況下,還有其他缺點,http://msdn.microsoft.com/en-us/library/ms189940%28v=SQL.90%29.aspx) – Rolle 2010-10-04 07:54:26

1

編寫Web服務爲它和使用的工具像TableDiff數據& OpenDBDiff的架構。沒有其他更簡單的方法。

+0

感謝有關工具的信息。我沒有聽說過他們,很有趣。我檢查了TableDiff,但它似乎只允許比較兩個可直接「達到」的數據庫,至少從其中一個數據庫可以達到?或者我錯過了什麼?快速谷歌搜索沒有建議任何其他事情。這怎麼能用WS來完成? – Rolle 2010-10-15 18:47:28

+0

哎呀!我忘記你不能使用鏈接服務器。唯一的辦法就是編寫自己的代碼來使用兩個不同的ADO.NET對象來逐個比較表,並且您需要逐行進行比較(可能與CURSOR?)但是,我猜想它會太慢,表現不會那麼好。 – gery128 2010-10-22 09:37:40

1

如果複製是單向的,請使用日誌傳送。主服務器可以將日誌備份放在任何UNC路徑上,然後您可以使用任何文件同步工具來管理從一臺服務器獲取日誌到另一臺服務器。用戶只需自動恢復其在本地文件夾中找到的任何事務日誌備份。

用戶將是隻讀的,但這正是你想要的 - 否則,如果有人可以更新用戶的記錄,你將會處於一個受到傷害的世界。

0

如果您有權訪問Visual Studio數據庫項目,則可以設置可生成T-SQL差異的構建任務(如果您使用的是構建系統)。然後,這是一個運送差異和應用它們的問題,但這是一個更容易的任務(WCF,電子郵件,無論什麼)。

唯一的技巧是確保開發/修改的數據庫和目標數據庫在啓動此過程時具有相同的模式。

但是,如果您可以使用複製技術,我會高度推薦。雖然可能推出自己的解決方案,但其管理將成爲未來的噩夢。現在開始工作並不難。確保它在未來的XX年繼續工作。

埃裏克

2

下旬的一個,但希望其他讀者會發現它有用......如果

不知道你已經知道,但你可以輕鬆地自動通過命令行界面SQL數據比較。它確實需要額外的許可證並附帶價格,但絕對有可能。

對於需要日常數據同步的類似項目,我已成功使用ApexSQL Data Diff

這兩個工具都是一流的。基本上不會出錯......紅門似乎具有更好的可用性,但Apex擁有更多選項並且執行速度稍快。

免責聲明:我與本文中提到的兩個供應商中的任何一個都沒有關聯,但我確實有機會在我工作的公司中使用這兩個供應商。

相關問題