2013-05-30 47 views
2

我們正在運行SQL Server 2008 R2。我們的操作軟件針對這個數據庫運行,我們將運行兩個獨立的操作軟件實例訪問兩個單獨的數據庫。兩個數據庫都在同一個SQL Server上。 數據庫中有超過26個表,其中有26個表需要在兩個單獨的數據庫中同步。可以從任一數據庫訪問表,插入/更新/刪除必須在兩個數據庫之間同步。同步需要實時發生,每分鐘不少於一次。如何在兩個方向上同步兩個數據庫之間的表 - SQL Server 2008 R2

我知道我可以使用MERGE更新表的硬編碼觸發器,但這意味着要編寫52(26 x 2)個單獨的觸發器,其中包含所有細節的硬編碼。

我已經看過複製,但似乎更多地面向餵養子表的一張主表,而不是雙向更新。

我已經看過Change Tracking,但並非所有的表都有PK的定義。這是供應商的數據庫,不是我的。我知道所有的桌子都應該有PK的。我不知道我可以在桌上定義PKs 。

我的另一個想法是用同義詞替換其中一個表,以便兩個系統實際上更新同一個表。我對該解決方案的擔憂是「打破」運營體系的可能性。

我剛開始研究微軟同步框架,以及這是否是一個選項。

任何想法,建議,方向將不勝感激。

謝謝, 戴夫

+0

可能的重複http://stackoverflow.com/questions/16497486/is-it-possible-to-real-time-synchronize-2-sql-sever-database – kristianp

回答

2

這是一個Replication場景。 Transactional Replication可以將訂閱服務器的更新處理回發佈服務器,但在這種情況下,您需要Merge Replication,這在訂閱服務器更新回發佈服務器時更好地合併衝突。

你需要PK。如果你有自動增量IDENTITY字段,那將是一個問題。有一些策略可以對id範圍進行分區,例如爲每個數據庫中的表的版本設置不同的Identity種子值。

如果無法對數據庫進行任何更改,則此方法可能無法滿足要求。複製是做這種事情的正確方式,但它需要一些權力來改變結構。

+0

CriticalFix, 我剛剛發現並開始挖掘合併複製。 這些表有PK,它們只是沒有被定義爲PK。我將與供應商交談,以瞭解進行這些更改的含義。 將近實時運行的合併複製工作?我只關心性能,因爲這是我們的操作系統。記錄本身的數量相當低。 – Dunny

+0

是的,這應該在幾乎實時(幾秒鐘)內工作。這就是爲什麼複製可能是您最好的選擇。 – criticalfix

相關問題