使用ReadyRoll的迁移脚本中的条件逻辑

时间:2017-06-09 15:39:10

标签: sql-server-2012 readyroll

我有一个使用ReadyRoll的项目和一个带有迁移头的脚本,该脚本根据项目属性的SQLCMD变量部分中定义的变量使用条件运行脚本($(Environment)。

-- <Migration ID="bf593e36-5883-4fff-9c6d-223f7449fccf" Condition="'$(Environment)' = 'DEV'" />

<some sql scripts here>

当我将此项目部署到干净的sql server实例时,无论我指定什么环境,它仍然部署此脚本。

我想知道如何根据ReadyRoll的条件运行脚本。 该脚本目前位于Migrations文件夹中......我不确定是否需要重新定位。

到目前为止,我已经查看了这些链接,但它们没有帮助:

2 个答案:

答案 0 :(得分:0)

我已经能够通过在我想要运行的sql上面添加一个if语句来实现这一点,该语句反映了迁移标记指定的保护。

最终的代码段如下所示:

-- <Migration ID="bf593e36-5883-4fff-9c6d-223f7449fccf" />
if '$(Environment)' = 'DEV'
BEGIN
  <some sql scripts here>
END

答案 1 :(得分:0)

这种方法适用于Octopus部署:

-- <Migration ID="bf593e36-5883-4fff-9c6d-223f7449fccf" Condition="'$(Environment)' = 'DEV'" />

唯一的问题是你需要创建具有相同名称的变量&#34;环境&#34;在您的ReadyRoll项目(SQLCMD变量)和八达通。并为每个环境分配单独的值(DEV,TEST,PROD等)。