我目前正在使用 msdeploy 的 dbDacFx 提供程序将 .dacpac 部署到数据库。dacpac 需要三个 SQLCMD 变量。我使用的语法如下所示:
-setParam:kind=SqlCommandVariable,scope=Database.dacpac,match=foo1,value="foo1 value"
我一直在尝试我能找到的一切,但不幸的是,几乎没有关于这个过程的文档。我从 msdeploy 得到的输出说Missing values for the following SqlCmd variables: foo1 foo2 foo3
。
如果有人能发现我做错了什么,那就太好了。如果有人知道在哪里可以获得一些很棒的文档。我很乐意接受任何说明我应该做什么的答案,但我很想了解所有这些价值观是什么,以及为什么我做错了。
编辑:在这一点上,dbDacFx 似乎不存在这样的选项。我们使用此功能的用例是尝试将相同的模板数据库(在 Visual Studio sql 项目中管理)部署到 70 多个数据库,我们希望并行执行。dbSqlPackage(除了被弃用)不是线程安全的,并且不允许并行部署。dbDacFx 克服了这个缺点,但是它不能(在我的实验中)通过驻留在项目级别的 SqlCmdVariables,并且它不能像 dbSqlPackage 那样使用发布配置文件。我正在与网络部署团队的成员联系,如果我能够弄清楚如何克服这些缺点,我会发布任何更新。