0

我已经阅读了很多关于此的问题,例如:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/da4bdb11-fe42-49db-bb8d-288dd1bb72a2/sqlcmd-vars-in-create-table-script?forum=ssdt

如何根据部署配置文件运行不同的前后 SSDT 发布脚本

我想要实现的是一种基于部署到的环境定义一组脚本的方法。这个想法是将环境作为 SQLCMD 变量作为 azure-devops 管道的一部分传递到一个名为 $(ServerName) 的变量中,我在 sql server 数据库项目中的属性下设置了该变量,默认值为“DEV” .

在此处输入图像描述

然后在部署后脚本中使用它,如下所示:

:r .\PostDeploymentScripts\$(ServerName)\index.sql

因此,这应该根据 $(ServerName) 变量选择正确的 index.sql 文件。通过发布并为 $(ServerName) 变量输入“QA”并生成脚本来测试它时,它仍然显示“DEV”脚本。但是,脚本的顶部显示变量已正确设置:

在此处输入图像描述

如何让部署后脚本正确引用 $(ServerName) 变量,以便动态设置正确的引用路径?

4

1 回答 1

0

与这篇不错的帖子相反:https ://stackoverflow.com/a/54482350/11035005 ,似乎该:r指令是在编译时评估的,并在配置文件被评估之前插入到 DACPAC 中,xml因此这是不可能的,正如解释的那样。

使用的值是构建配置中的默认值或本地值,只能从那里进行控制。

于 2020-02-13T19:36:00.180 回答