星期五, 8月 31, 2012

SQL Server Database Project

今天為大家介紹一下 Visual Studio 2102 2012 SQL Server Database Project,不知道大家有沒有用過這個 Database 專案,這個東西相當好用,如果搭配上版本控管工具,可以把我們對於 Database 的 Schema 修改都記錄起來,這樣對於專案的控管都會有所依據,所以直接看圖說故事吧!

開啟專案

clip_image001

開完專案後,我們把我們的 Database 匯進來了

clip_image002

一開始並沒有 Database 連線可以給我們選擇,我們只要去新建就好

clip_image003

新建的方式很簡單,該填的填一填

clip_image004

這樣我們選用剛剛的 Database 連線,如果要把"權限"還有"Database 設定"都匯進來,那把下面的兩個選項都打勾

clip_image005

噹噹噹,我們就可以看到 Database 的資料都匯進來了

clip_image006

看一下匯進來的東西,這樣初始化就完成了

clip_image007

接下來介紹一下 Schema Compare 這個功能,這功能可以比較"來源"與"目標" Schema 的不同,這樣說好像沒啥感覺,舉個常會用到的例子好了,例如我在 Database Server 上改了 Schema,要如何運用這功能來達到比較與同步的效果,看圖繼續說故事吧!
開一個新的 Schema Comparison

clip_image008

設定好"來源"跟"目的",按 Compare 按鈕

clip_image009

由比較就可以看到哪個地方改掉了,如果確定要同步,按下 Update 按鈕就行了,一切都這麼自然,這樣兩邊的 Schema 就同步了,通常 Schema 同步後,Bibby 我都會上版本控管,這樣就可以去追蹤哪個版本修改了哪些欄位哪些內容

clip_image010

不過 Database Project 功能不只是這樣而已,其實我們也可以反向過來做處理,例如我們今天把方案總管的 dbo -> Table -> Test.sql 打開,我們就可以看到下面這個圖形化介面,我們可以直接做處理,例如把某個欄位刪掉,欄位改名等..

clip_image011

我們改完後,把我們之前設定的"來源"跟"目的"反向,因為比較要用 Database Project 的來當"來源",按下 Compare 後就可以比較出來,兩邊的不同,如果要同步,也可以用之前的方式,按下 Update 按鈕就可以了,不過有時候有個問題,我們不一定都可以碰到 Dasebase Server,所以改個方式按下 Generate Script 按鈕,產出 Script ,讓可以動 Database Server 的人執行

clip_image012

這就是產出來的 Script

clip_image013

不過 Bibby 在使用個時候沒有這麼順利,有遇到一個錯誤訊息"A project which specifies SQL Server 2012 as the target platform cannot be published to SQL Server 2008."這個的意思是說,我的 SQL Server 不是 2012 版本,被嫌棄了XD,要解決的方法只能很委屈的去條 vs 2012 的設定…

clip_image014
image

基本運用大概就這些,Bibby 我在開發的時候都有測試的DB,開發了一段時間後,要上正式機時,就把自己的 Database Project 恢復到上次上正式機之前的版本,然後比較一下測試的DB,這樣就可以產出這次要上正式機的 Script 來,用這方式就不怕自己開發的這一段時間 DB 部分改了多少 Schema 啦,大概就是這樣了,有問題再一起討論吧!

Reference:
http://social.msdn.microsoft.com/Forums/en-US/ssdt/thread/312ed73e-f70d-4072-ab2b-77d417dbfee5
http://blog.nhaslam.com/2012/08/20/vs2012-schema-comparison/

沒有留言: