2012-06-30 308 views
0

我正在捕撈這方面的知識,因爲我知道我可以得到我想要的,但我想知道這是否是最好的方法。由於項目蠕變,曾經是一個非常簡單的應用程序的數據庫變成了一個過於複雜的怪物,雖然它工作,但管理並不容易。數據庫數據遷移

我現在有機會重新開始,但只有一件一件地逐步將功能從舊應用程序遷移到新應用程序。這要求我保持新數據庫與舊數據庫的同步,幸好只需要一種方法,因爲在新數據庫上不會創建需要遷移的數據。

迄今爲止考慮的選項是SSIS和一個Quartz觸發的使用普通C#ADO.Net的windows服務。我認爲SSIS可能是一個壞主意,因爲它可能是一個帶有upserts的噩夢,需要創建臨時表,然後進行合併,並且模式差異非常廣泛,所以SSIS邏輯將是一個令人頭疼的問題。 ADO.Net方法是我傾向於作爲數據讀取器的方向,批量插入和LINQ應該很好地完成這項工作。然而,考慮到在我之前必須有多少人受到影響,我認爲必須有更好的方法。你們用什麼方法?

爲了得到更多的具體細節是:

  • SQL Server 2008 R2的
  • 〜2萬行了約30桌 - >〜20個 表
  • 數據庫每個人都可以在完全單獨的數據庫服務器 與不同的憑據

非常感謝

回答

1

讓supose這樣的場景:

S_old: your 'old' server 
S_new: your 'new' server 
db_old: your 'old' database 
db_new: your 'new' database 

的溶液可以一nighly db_old備份和恢復s_old到s_new:db_old_bk。然後,在s_new中,您可以訪問兩個數據庫(db_old_bkdb_new)。此時,您可以輕鬆地在t-sql上使用'merge'sqlcommand進行插入操作(我們正在討論20個表格)。這是你在找什麼?

+0

好好玩完這個看起來像最可行的方法。雖然沒有我期望的那麼容易,但卻很有效 – Hawxby