2011-04-04 157 views

回答

4

獲取諸如Red Gate的SQL Compare之類的工具。

您需要爲此付費,但它通過節省時間爲自己付出代價。

如果您有緊急需求,可以試用。

+0

+1不能說的紅門工具不夠好東西 - 他們是一個**必須**在任何嚴重的SQL服務器開發人員的工具箱! – 2011-04-04 13:54:46

+0

只需要確認,該工具是否可以與安裝程序一起使用?我的意思是當我在當時使用安裝程序在客戶端機器上執行sql對象時,我想要比較sql以檢查現有版本。 – 2011-04-05 04:54:41

+0

如果您想將SQL Compare的邏輯添加到您自己的代碼中,則需要http://www.red-gate.com/products/sql-development/sql-comparison-sdk/ – 2011-04-06 16:18:31

2

我不建議你這樣做,如果你能避免它。

如果你只是想比較兩個SQL Server數據庫,我推薦一個低成本的替代方案http://cdttools.com/sql-diff-erence/。 (警告:我寫的)。

但是,對於你所指的,我推薦一種不同的方法。您應該已經知道已經發貨的產品的各種模式的不同版本。因此,根據將每個腳本完全升級到最新版本來構建更改腳本。這樣你的安裝程序只需要檢測一個版本號並根據它選擇它的sql操作。

如果您確實真的想在安裝程序期間進行SQL比較,那麼yoo可能需要查看屬於SQL Server功能部件包的SMO(共享管理對象)。但是,在使用它們之前,您很可能必須安裝這些軟件。

然後你可以用它來生成每個SQL對象的腳本,做在你安裝的比較。不過,我真的不建議這樣做。

它會告訴你它們是否存在,並允許您生成「更改」或「創建」腳本版本。或者,您可以直接轉到INFORMATION_SCHEMA數據庫系統對象,這將允許您直接查詢對象是否存在。

0

在Visual Studio 2012,轉到SQL(菜單) - >架構比較。點擊左側的選擇源,然後選擇開發數據庫。選擇右側的生產數據庫。

然後點擊生成腳本圖標(更新圖標旁邊,它看起來或多或少像一個音樂圖標)。這將生成更新腳本。您也可以取消您不希望包含在腳本中的任何更改。它是...'免費',如果你碰巧擁有Visual Studio 2012

4

你可以比較SQL Server 2008中的模式和任何新的SQL Server與ApexSQL Diff,它有免費的社區版。

它具有用戶友好的用戶界面,您可以輕鬆選擇數據庫(或其他數據源作爲備份,源控制項目,腳本文件夾)比較它們,獲得不同的結果並從源數據庫同步到目標數據庫。

如果你只是想比較對象,只看到分歧,建立一個合併的腳本,你可以檢查出的免費工具 - ApexSQL Compare

還有一個工具,可以做到這一點,你想要的是一份工作dbForge Schema Compare