資料庫專案範本,已經成為我在開發專案時,不可或缺的資料庫管理工具,善用它提供的機制,可降低出錯的機率。
Predeployment | Postdeployment Scripts 它是資料庫專案所提供的語法,是一種SQLCMD,現在我要利用它來部署我的開發 | 測試環境,資料庫專案有 DDL,在不同的條件,呼叫不同的 DML
應用情境:
開發環境與測試環境需要有不同的資料內容,資料庫專案管理著DDL,也有預設的 DML,因為預設的 DML 我無法預測會有哪些資料(隨著專案進行會有所變化), 為了讓測試情境擁有期望資料,必須與預設 DML 切割,所以我必須要有兩份 DML。
部署流程:
開發環境:
Windows 10 Enterprise x64
Visual Studio 2015 Update1
定義 SQLCMD 環境變數:
在資料庫專案→屬性→SQLCMD Variables→建立變數名稱 PublishFile
Default:變數的初始值
如下圖:
接著新增一個 Script(Not in build),我要用它來放 DML 語法,如下圖:
最後新增一個 Post-Deployment Script ,鍵入以下程式碼
- '$(PublishFile)' 就是我們剛剛建立的環境變數
- 條件成立時調用 Script1.sql
IF '$(PublishFile)' = 'localdb.publish.xml'
BEGIN
PRINT ' Creating Test Data for Debug configuration ';
:r .\Script1.sql
END
當對著資料庫專案按發行,就會彈跳出以下畫面,只要在 Value 輸入特殊字串讓 IF 區段能執行
有關更多的SQLCMD請參考:
https://msdn.microsoft.com/zh-tw/library/ms174187%28v=sql.120%29.aspx
使用SQLCMD時有一個很重要的關鍵,就是 Script1.sql 裡面不能有 GO 語法
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET