2016年10月6日 星期四

[Visual Studio] Compare DB schema

 Visual Studio    Sql Server    DB Schema    Compare DB Schema  


▌Introduction


在迭代式專案開發的過程,需要持續的佈署開發的產品到測試環境,程式打包的部分問題比較小;  但是如果需要更改目標環境的資料庫結構(Database schema)時, 在不遺失資料的前提下,就必須注意建立、更改資料表和欄位的順序以及相依性( : Foreign key)

這時候,使用Visual Studio所提供的「Sql Server : 新增結構描述比較」 (Comparing Database Schemas) 就可以輕鬆比對出開發和測試資料庫兩邊的差異, 然後做同步。 當然了, 在一些Foreign keyNOT NULL欄位的限制下, 過程中還是難免需要手動備份資料再還原的情況; 但是在Comparing Database SchemasGUI下作業,過程可是比完全由自己比對下指令查詢和更新愉快多了。


▌Environment

  Visual Studio 2015 Update 3
  Sql Server 2012




How


開啟 【工具】→【SQL Server】→【新增結構描述比較

 

選擇左邊的「來源資料庫」和右邊的「目標資料庫」。

點選「比較」

稍等一下後,就會看到兩邊比對的結果,在動作這個欄位可以看出物件是否要進行新增刪除或更新。

還可以往下一層看到欄位和索引鍵,


工具列提供以下功能:



功能
說明
1
比較
比對兩邊差異
2
更新
更新目標資料庫
3
產生指令碼
產生所選取的差異指令sql (如下圖)
如果需要更改sql或加入sql,可利用此功能先產生指令後,在直接修改並執行。
4
選項
可設定以單一使用者執行」、「變更前備份等選項。
5
群組結果
排序差異。

 

在最單純無Foreign key及其他相依的情況下,選擇所有差異並點選「更新」就可以完成從來源資料庫同步Schema到目標資料庫的工作; 然而,大部分情況下,我們還是必須自行決定那些差異可以先執行(例如:新增mapping tables …)或處理備份及還原資料。


PS. 如果我們需要快速的產生既有資料的insert sql,可以利用伺服器總管連接到資料庫後,選擇該資料表並右鍵選擇【顯示資料表資料】, 在資料列上右鍵【指令碼】,就可以很快的產生insert sql

 

 


Reference






沒有留言:

張貼留言