0

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

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

<some sql scripts here>

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

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

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

4

2 回答 2

0

我已经能够通过在我想要运行的 sql 上方添加一个 if 语句来使其工作,该语句反映了迁移标记指定的保护。

最终的代码片段如下所示:

-- <Migration ID="bf593e36-5883-4fff-9c6d-223f7449fccf" />
if '$(Environment)' = 'DEV'
BEGIN
  <some sql scripts here>
END
于 2017-06-12T07:59:48.883 回答
0

这种方法非常适合 Octopus 部署:

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

唯一的事情是您需要在 ReadyRoll 项目(SQLCMD 变量)和 Octopus 中创建具有相同名称“Environment”的变量。并为每个环境分配单独的值(DEV、TEST、PROD 等)。

于 2017-08-05T18:38:31.543 回答