我有一个 Azure SQL 数据库项目,它使用 SQLCMD 变量动态设置值。我可以将这些变量作为项目附带的发布配置文件的一部分引用,甚至可以覆盖它们。
我正在使用 Visual Studio 2022 RC。
我还有一个 Azure DevOps 管道,它在将数据库部署到 Azure 的部署任务之前检查项目构建.dacpac
并将其移动到必要的目录中。.dacpac
部署任务SqlAzureDacpacDeployment@1
失败。前面的构建任务正在生成一个.dacpac
没有在项目级别设置的默认 SQLCMD 变量值。
##[error]*** 部署计划生成过程中发生错误。部署无法继续。
##[错误]以下 SqlCmd 变量的值缺失:var1 var2。
##[错误]Azure SQL DACPAC 任务失败。SqlPackage.exe 以代码 1 退出。在https://aka.ms/sqlazuredeployreadme#troubleshooting-查看如何解决故障
为了提供一些额外的上下文,这是构建和部署的 CI 管道的一部分。
- task: VSBuild@1
displayName: 'Build projA database.'
inputs:
solution: 'projA\\projA.sqlproj'
vsVersion: 16.0
platform: 'x64'
- task: SqlAzureDacpacDeployment@1
displayName: 'Deploy projA database.'
inputs:
azureSubscription: '$(ServiceConnectionName)'
ServerName: '$(ServerName)'
DatabaseName: '$(DatabaseName)'
SqlUsername: '$(ServerUserName)'
SqlPassword: '$(ServerUserPassword)'
DacpacFile: '$(Build.SourcesDirectory)\\projA\\bin\\Output\\projA.dacpac'
我认为在创建.dacpac
. 不是这种情况。
我也尝试将local
值设置为相同default
(这些以前是空白的)但出现了相同的错误。
我看过这篇文章,它表明在部署时可以提供额外的变量。我不确定是否可以使用AdditionalArguments
部署任务中的子句将值应用于现有变量。
理想情况下.dacpac
,如果没有被覆盖,我希望使用提供的 SQLCMD 默认值生成,当然这应该是默认行为。我不想在多个位置维护值,这应该在项目中捕获。
我已阅读如何在部署 DacPac 时将多个 SQLCMD 变量与 SqlPackage.exe 一起使用?但这并没有回答我的问题。