2013-11-21 40 views
4

我正在使用msdeploy的dbDacFx提供程序将.dacpac部署到数据库。 dacpac期望三个SQLCMD变量。我使用看起来像这样的语法:将SQLCMD变量传递给带有msdeploy的dbDacFx提供程序

-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那样使用发布配置文件。如果我能够弄清楚如何克服这些缺点,我将与网络部署团队的成员联系并发布任何更新。

回答

2

在向MSDeploy团队发送一些Microsoft员工电子邮件之后......事实证明,目前这是不可能的,但可能会考虑将来发布。

+1

你有没有听说过这个消息? MSDeploy显示了如此多的承诺来满足我们的数据库部署需求,但是在数小时追踪没有明显记录/诊断的无意义错误消息后,我现在认为它只是不支持我们想要做的事情。非常令人沮丧。 – Michael12345

+0

还没有听说过任何消息....我的同事和我自己采用了Sql Server团队提供的SqlPackage产品,并以输出脚本的方式将其包装,以便我们清理我们不想要的语句(在我们的例子中, 'drop user。* ?;'。之后,我们使用SQLCMD再次执行包含在同一个工具中的脚本,结果是我们的最快部署选项。 – misterManager