部署 DacPac 时如何在 SqlPackage.exe 中使用多个 SQLCMD 变量?
Posted
技术标签:
【中文标题】部署 DacPac 时如何在 SqlPackage.exe 中使用多个 SQLCMD 变量?【英文标题】:How to use multiple SQLCMD variables with SqlPackage.exe while deploying a DacPac? 【发布时间】:2015-04-14 05:11:28 【问题描述】:我正在使用 sqlpackage.exe 部署 dacpac,并且需要为 dacpac 中的部署后脚本传递 SqlCMD 变量。我发现了一个相关的问题here 和here。
但我收到以下错误: 以下 SqlCmd 变量缺少值:BuildVersion 说明。 Description=$Description :术语“Description=$Description”不是 识别为 cmdlet、函数、脚本文件或可操作的名称 程序。检查名称的拼写,或者如果包含路径,请验证 确保路径正确,然后重试。
请帮帮我。
【问题讨论】:
【参考方案1】:将 SQLCMD 变量传递给 SQLPackage 的正确开关是这样的 /v:Description=$描述
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 `
【讨论】:
【参考方案2】:您似乎正在使用 Powershell 根据 cmdlet 错误调用 SqlPackage。如果是这种情况,请确保使用倒撇号转义美元符号,即
即描述=`$描述
你能发布你传递的完整命令吗?
【讨论】:
以上是关于部署 DacPac 时如何在 SqlPackage.exe 中使用多个 SQLCMD 变量?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有实际部署的情况下测试 DACPAC 是不是可以部署
使用 CLI 工具 (sqlpackage.exe / PS dbatools) 时通过 BACPAC / DACPAC 导入数据库在用户上失败