[Visual Studio]專案裡的資料庫專案

主要紀綠一下資料庫專案的一些用法

前言

這陣子團隊在做一個專案,因為有分寫db和寫server端和前端,這期間因為資料庫異動的時候,還有因客戶要求需使用sp的方式來做開發,常常發生了我寫前端的時候,一旦有錯誤,就要從前端一路追到ap端再追到db端,這種不同步甚至只是小改一下,就會導致問題發生的麻煩層出不窮,再加上pm常會去測試機盯進度,期間有可能有小bug的修復,導致測試機上常常是NG的狀況,所以研究起了資料庫專案,雖然本人是db端的苦手,但有問題還是要想個辦法來解決,因為只要是人就會犯錯,這時候找一個好的工具或開發方式就非常重要,想利用假日的時間來研究一下有關資料庫專案,相對於傳統直接用ssms所能帶來的幫助是什麼,也寫個紀錄可供成員參考。

如果是一個人開發的話,db理應就是放在本機端,完全ok之後再還原回測試機給客戶或qa測試,但如果是團隊合作的話,這點就會麻煩很多了,單靠文件不是理想的作法,就算用溝通的,也很容易有沒注意到的細節,這時候版控和比對則是更好的做法。

本文大網

  1. 建立一個資料庫專案
  2. 資料庫專案進入版控,以方便順利的降版或追蹤
  3. 把DB分成開發環境,測試環境,正式環境
  4. 資料庫專案能帶來相對於SSMS的哪些好處和幫助
  5. 總結

建立一個資料庫專案

假設我現在有一個真實專案,主要是負責做SSO的,然後要在現有的專案去建立一個資料庫專案

接著我們需要把真實的DB Import回來,我拿目前正在開發階段的db來舉例

可以看到我們已經成功把線上的db環境建立成資料庫專案了。

資料庫專案進入版控,以方便順利的降版或追蹤

我們可以看一下目前TSSO的專案已都變成一支一支的檔案,比如sp的資料夾裡面,接下來第一步我們就是加入版控,在此用的是svn

加入版控之後我們只要針對sp做任何修改,都可以追蹤還有找回之前版本的狀態,甚至是團員有未經溝通就修改欄位名稱,甚至是刪除欄位的狀態都能找出元兇了,接著就是要考量多人協作的時候,如何分成開發合作環境,還有供人測試環境等。

把DB分成開發環境,測試環境,正式環境

這邊可能就要依團隊的決策,畢竟我們就算放在local端,還是可以透過版控跟大家同步db的最新狀況,但web.config就不好管理,除非大家都是一樣的db名稱和帳號密碼,在此我把原本TSSO備份出一個TSSO_DEV,接著我修改了某些狀態再跟TSSO_DEV做比對

接著選好db和要比對的table之後,就會比對出異動的檔案和地方,確定好更新之後,按下Update就會把異動更新回目標

資料庫專案能帶來相對於SSMS的哪些好處和幫助

第一是假設我們有多個欄位需要更新,在ssms的話我們可能就很不方便,但我們在vs的話就非常方便,我們只要用CTRL+SHIFT+F的方式來搜尋,甚至可以整個找到直接取代

第二是如果我們在sp有打錯字的狀況,可以透過整個專案建置而抓到哪些地方是有問題的。

第三是以往db的管理很麻煩,因為我們可能是接前人留下,或者是多人協作,甚至是自己以為當初建立的欄位沒用,但想刪也不敢刪,所以table總是欄位一直加,卻不敢刪也不能改,在能建置整個db的狀況之下,這點我們終於至少在db端比較有依據了(但小心刪了應用程式會出現一堆bug,甚至是否有關聯到別的db)

第四也是最重要的在visual studio的intellisense非常強大,加上我們修改完成之後,可以用比對的方式同步回測試db,甚至我們也可以用產生指令碼的方式去更新。

第五是我們可以儲存很多sql比如查詢,或者刪除user,或執行sp的預設參數,簽進版控裡面,那大家就可以共用一樣的sql script不用重覆造輪子了。

結論

db真的是一個很容易發生混亂的議題,如果有更好的做法,再請多多指教。