如何在DevOps的SQL部署任务中向部署脚本传递环境变量?
问题解决方法
你遇到的报错是因为部署脚本中使用了名为env的SqlCmd变量,但部署任务没有向SQL运行环境传递该变量的赋值,导致脚本执行时无法识别@env变量。
修正后的YAML配置
你需要在SqlDacpacDeploymentOnMachineGroup@0任务的inputs中增加AdditionalArguments参数,用来传递自定义的SqlCmd变量:
- task: SqlDacpacDeploymentOnMachineGroup@0 displayName: Install database inputs: TaskType: 'dacpac' DacpacFile: '**/app-db.dacpac' TargetMethod: 'server' ServerName: '(localdb)\MSSQLLocalDB' DatabaseName: 'app-dev' AuthScheme: 'windowsAuthentication' # 新增以下行传递SqlCmd变量,格式为 /v:变量名=变量值 AdditionalArguments: '/v:env=DEV'
如果你的环境值已经定义为Azure DevOps管道变量(比如变量名为envType),可以直接引用管道变量:
AdditionalArguments: '/v:env=$(envType)'
补充说明
- 如果需要传递多个SqlCmd变量,直接在参数后空格追加即可,示例:
/v:env=DEV /v:timeout=300 /v:domain=test.com - 你也可以提前在你的DACPAC数据库项目的「SqlCmd变量」设置中声明
env变量,可消除部署过程中的SQL72013警告。
内容的提问来源于stack exchange,提问作者MiguelSlv
相关产品推荐
相关产品推荐

