我有一个使用ReadyRoll的项目和一个带有迁移头的脚本,该脚本根据项目属性的SQLCMD变量部分中定义的变量使用条件运行脚本($(Environment)。
-- <Migration ID="bf593e36-5883-4fff-9c6d-223f7449fccf" Condition="'$(Environment)' = 'DEV'" />
<some sql scripts here>
当我将此项目部署到干净的sql server实例时,无论我指定什么环境,它仍然部署此脚本。
我想知道如何根据ReadyRoll的条件运行脚本。 该脚本目前位于Migrations文件夹中......我不确定是否需要重新定位。
到目前为止,我已经查看了这些链接,但它们没有帮助:
答案 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等)。