2012-03-19 40 views
0

我在總部有一個數據庫,在分支有另一個數據庫。兩個數據庫都是相同的,所有模式都是相同的。它可能不止一個分支。如何從不同位置同步兩個sql-server表?

例如,該分支下有一個叫銷售表,所有的交易將被插入到表中的本地數據庫。每天晚上,當商店靠近時,來自分店的所有銷售信息都將與總部數據庫同步。只有不在總部數據庫中的記錄纔會被插入或更新。

我怎樣才能做一個非常有效的方法,小而輕,重新連接時連接中斷,因爲網絡帶寬是有限的和不斷下降。

我該如何從總部同步到所有具有最新產品和價格的分支機構?

我應該寫一個web服務嗎?

謝謝。

回答

3

我會建議SQL Server複製。你將不必編寫任何代碼。

http://msdn.microsoft.com/en-us/library/ms151198.aspx

複製是一組技術用於複製和分發數據 和從一個數據庫到另一個數據庫中的對象,然後在數據庫之間 同步,以保持一致性。使用 複製,您可以分發數據到不同的位置,並 遠程或移動用戶通過局域網和廣域網,撥號 連接,無線連接和互聯網。

更新:

由於複製的數據庫被部署到客戶端,比我會用同步框架是不可能的。

http://msdn.microsoft.com/en-us/sync/bb821992

微軟同步框架是一個全面的同步平臺 使應用程序,服務和 設備的協作和脫機。開發人員可以構建同步生態系統,通過任何網絡使用任何協議 來集成任何應用程序,任何商店的任何數據。同步框架功能 支持漫遊,共享和使數據脫機的技術和工具。

+0

無法使用複製。假設我有更多的分支,我會面臨問題。 – kelvinfix 2012-03-19 08:18:54

+1

合併複製,它可以是一個正確的解決方案嗎? – kelvinfix 2012-03-19 08:20:35

+0

還有一件事是用戶不應該使用sqlserver管理工作室。 – kelvinfix 2012-03-19 08:25:25

0

我來這裏說「使用合併複製」,因爲你所描述的或多或少是你實現它的教科書示例。

0

這兩個位置在同一個本地網絡內嗎?你是否需要表格在一段時間內只同步一次(例如每晚而不是實時)?

如果答案是既肯定,那麼你可以使用SQL Server的tablediff.exe命令行工具。它可以逐個表格進行一次性比較,並自動生成sql,以便將dest同步到源文件。

還有一個它的GUI包裝http://code.google.com/p/sqltablediff/這使得工作更容易。

0

我已經使用xSQL Software在過去,並非常滿意的結果。您可以在任一方向或兩個方向上覆制架構和/或數據。