在部署DacPac时如何使用SqlPackage.exe使用多个SQLCMD变量?

时间:2015-04-14 05:11:28

标签: sqlcmd sqlpackage

我正在使用sqlpackage.exe部署dacpac,需要为dacpac中的postdeployment脚本传递SqlCMD变量。我找到了相关问题herehere

但是我收到以下错误: 缺少以下SqlCmd变量的值:BuildVersion描述。 说明= $说明:术语'说明= $说明'不是 被识别为cmdlet,函数,脚本文件或可操作的名称 程序。检查名称的拼写,或者如果包含路径,请验证 路径是正确的,然后再试一次。

请帮帮我。

2 个答案:

答案 0 :(得分:3)

将SQLCMD变量传递给SQLPackage的正确开关是这样的 / V:描述= $描述

Powershell引用有点棘手。 以下是您的一个例子:

https://gist.github.com/davoscollective/adf9b890984e51d8dee2

& "C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe" ` #Note this is SQL Server 2012 specific directory, alter as needed
/Action:Publish `
/SourceFile:$sourceFile `
/TargetServerName:$targetServerName `
/TargetDatabaseName:$targetDBname `
/V:SQLCMDVariable1=$SQLCMDVariable1 ` #If your project includes other database references, or pre/post deployment scripts uses SQLCMD variables
/v:SQLCMDVariable2=$SQLCMDVariable2 `

答案 1 :(得分:1)

您似乎正在使用Powershell根据cmdlet错误调用SqlPackage。如果是这种情况,请确保使用反撇号(即

)转义美元符号
  

即Description = ` $ Description

你能发布你传递的完整命令吗?