demoshop

demo, trying to be the best_

一般來說程式上線以後「正式機」的資料庫就有可能和「開發機」慢慢的產生差異,尤其程式執行了幾次改版,也有可能是因為當初部署的不確實,或是業主 DBA 好心的介入調整,都會讓「正式機」和「開發機」開始產生差異進而導致有一些奇妙的 Bug 產生,這篇文章要介紹的就是如何利用 Visual Studio 內建的「結構描述比較」來讓「正式機」與「測試機」的 DB Schema 不要再有差異。

demo廢言 如前文提到,因為是正式機環境,所以我們通常不會可以隨意的進入,也不太可能在上面裝個 Visual Studio 來做比對的工作,但是我們可以將正式機的結構描述匯出後拿到本機比對,類似的需求 demo 在四年前的文章有寫過 如何建立 dbschema 檔用於 Schema 比對 但是時代會進步所以四年後的今天這招當然是沒用了 =.= 四年前還需要用指令碼來操作,而現在只要你是 SQL 2012 以後的版本都可以直接使用 SQL Server Management Studio (以下簡稱SSMS)的精靈來完成,因為可以使用精靈所以就大幅的降低了操作的門檻,任何一個業主的人員只要給他看本篇文章以後,應該都可以輕鬆的完成匯出動作。


●首先開啟 SSMS 選擇到要比較的資料庫,在資料表名稱上按「滑鼠右鍵」選擇「工作」「擷取資料層應用程式」


●精靈出現(快許願吧)

(下一步就好)


●請輸入你想輸入的資訊


●摘要就是拿來看的,確定沒錯就按「下一步」吧


●好的!匯出完畢!


demo廢言如果您是要匯出的人員,那下面都不干你的事情了,只要把匯出的檔案交給開發人員,就可以去喝茶囉

 

 

●開發人員拿到 DAC 封裝檔案後,請開啟 Visual Studio 選擇「工具」→「SQL Server」→「新增結構描述比較」

(本範例使用 Visual Studio 2013,其餘版本的位置可能不同,請自行尋找一下)


●結構描述比較畫面上方分別有「來源」與「目標」,首先我們先選取「來源」


●將來源選擇剛剛得到的 DAC 封裝檔


●再選擇「目標」,將目標直接選開發機的DB

(如果您有建立資料庫專案也可以選資料庫專案)


●「來源」與「目標」皆選取後點選「比較」即可開始比較作業


●比較結束後的畫面,如果有差異就會顯示出來

因為正式機無法直接連到,所以按「更新」是沒用的,請點選「產生指令碼」

注意事項千萬不要一股腦的就更新,請仔細觀看差異的部分,確定是要更新的才更新,否則請將更新的勾選點掉,尤其是使用者與角色千萬不要同步上正式機。


●對應的更新指令碼就產生好了,這時候就可以交給業主的負責人員執行更新的動作

注意事項千萬不要一股腦的就更新,請仔細觀看差異的部分,確定是要更新的才更新,什麼都不看就是災難的開始。


demo廢言利用本文的技巧可以讓遠在天邊的資料庫也可以確保 Schema 的正確性,開發人員一定要學起來,最後提醒一下這技巧在 SQL Azure 也是通用的。

回應討論