某日的一個早晨,產品告訴我說要把之前變更的一個功能更改回原來的設計內容,但是發現我們之前的查詢業務邏輯實在Proc中實現的,沒有進行備份,不得已又要重新對該業務邏輯進行編碼,浪費了不必要的時間與精力。
通過這件事后思考,針對業務系統,很多復雜的查詢邏輯是在PROC 中進行實現,如果哪天需求變更或者上線后發現問題需要回滾,這時候就會非常麻煩,如果能將數據庫項目中相關視圖,觸發器或存儲過程與版本管理工具結合起來的話,對於不同版本與不同分支時就能省很大一份力了,這樣就解決了很多不必要的麻煩。
為了解決問題首先是上網查相關資料,發現很多工具,但是不盡人意,兼容性和使用規則上不是那么完美,最后想到了宇宙第一IDE Visual Studio,也許微軟早都替我們想好了呢,如此就發現了《SQL SERVER 數據庫項目》,在結合了git后真是屢試不爽,下面就着重介紹一下數據庫項目在系統中的應用。
1、打開VS,點擊文件-新建項目-SQL SERVER 數據庫項目(tips:安裝vs時需要添加數據庫管理插件)
2、創建項目后,在創建的解決方案下右鍵點擊導入-數據庫-選擇數據庫所在連接,導入設置默認就好,如果你們的數據庫權限范圍較高的話,根據自身情況設置
3、啟動成功后,會自動掃描數據庫的相關配置加載到VS列表當中,這樣對系統的數據庫架構就一覽無遺了
4、打開某個表的結構文件,可以看到我們表結構設計,相關的索引、主鍵、觸發器等,當然都只是結構,並且我們在界面上修改后,同時會生成對應的SQL語句,我們可以直接到數據庫中F5執行 以下即可
有的同學會說,我還是習慣在SqlServer中對表進行修改,包含業務邏輯SQL的編寫,還有些ef code first 相關的項目都是會直接操作到DB項目的,無妨,接下來我來看數據庫項目重要一個功能,架構比較
首先我在Person 內通過Sql Server新增一個字段
alter table person add DepartmentId int null
增加完畢后,右鍵我們的數據庫項目,點擊架構比較,這里需要進行區分,假如你在VS內更改的表結構往數據庫更新,就將數據項目放置左邊,從數據庫往數據庫項目更新,反之,否則更新反了后果可是很糟糕的,選擇數據源后,點擊比較,VS就會自動比較出當前項目與比較項目的差異,這里就可以根據你自己的需要進行一個勾選,然后點擊更新后,就會將左邊的架構更新至右邊了。
更新完畢之后,數據庫項目中對應的表結構、存儲過程、觸發器等文件就會變成對應的物理文件,這些文件我們可以將它放置代碼管理工具進行管理了,並且很好的注釋此次更改的內容或新增的需求等,例如:
git add person.sql
git commit -ma "人員表增加部門Id"
git push
通過代碼管理工具我們就能將我們的數據項目打成一個一個分支,很方便查到我們每個時期對應的結構文件了。
本文只是簡單記錄數據庫項目在實際開發過程中帶給我們的便利,讓更多人知道這個實用的工具,其中還有很多坑需要各位一點一點去發現,這里就不一細說了,文章有寫的不當的地方,請及時指出,如本文對您有所幫助,也請點個推薦,您的肯定也是是我最大的動力。thanks