我有一个使用ReadyRoll的项目和一个带有迁移头的脚本,它使用一个条件来运行脚本或不基于项目属性的SQLCMD变量部分中定义的变量($(Environment) )。
-- <Migration ID="bf593e36-5883-4fff-9c6d-223f7449fccf" Condition="'$(Environment)' = 'DEV'" />
<some sql scripts here>当我将这个项目部署到一个干净的sql服务器实例时,不管我指定了什么环境,它仍然部署这个脚本。
我想知道如何使用ReadyRoll运行基于条件的脚本。脚本当前驻留在Migrations文件夹中.我不确定它是否需要重新定位。
到目前为止,我已经看过这些链接,但它们没有帮助:
发布于 2017-06-12 07:59:48
通过在我想要运行的sql上面添加一个if语句,我已经能够让它工作起来,它反映了迁移标记指定的保护。
最后的代码片段如下所示:
-- <Migration ID="bf593e36-5883-4fff-9c6d-223f7449fccf" />
if '$(Environment)' = 'DEV'
BEGIN
<some sql scripts here>
END发布于 2017-08-05 18:38:31
这种方法对于八达通的部署非常有效:
-- <Migration ID="bf593e36-5883-4fff-9c6d-223f7449fccf" Condition="'$(Environment)' = 'DEV'" />
唯一的问题是您需要在您的ReadyRoll项目(SQLCMD变量)和Octopus中创建同名为"Environment“的变量。并指定单独的值(DEV、测试、PROD等)对于每一个环境。
https://stackoverflow.com/questions/44461785
复制相似问题