如何将变量传递给 sql deploy on devops?
How to pass a variable to sql deploy on devops?
我需要 post 部署脚本(数据库项目的一部分)来根据环境设置一些特定的东西 运行。
如何传递脚本可以访问的环境变量?
这是我正在尝试做的事情。
yaml 文件:
- task: SqlDacpacDeploymentOnMachineGroup@0
displayName: Install database
inputs:
TaskType: 'dacpac'
DacpacFile: '**/app-db.dacpac'
TargetMethod: 'server'
ServerName: '(localdb)\MSSQLLocalDB'
DatabaseName: 'app-dev'
AuthScheme: 'windowsAuthentication'
日志:
Starting: Install database
==============================================================================
Task : SQL Server database deploy
Description : Deploy a SQL Server database using DACPAC or SQL scripts
Version : 0.3.23
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/sql-dacpac-deployment-on-machine-group
==============================================================================
*** Could not deploy package.
Warning SQL72013: The following SqlCmd variables are not defined in the target scripts: env.
Error SQL72014: .Net SqlClient Data Provider: Msg 137, Level 15, State 2, Line 14 Must declare the scalar variable "@env".
Error SQL72045: Script execution error. The executed script:
IF (@env = 'DEV')
BEGIN
...
END
这是我在任何地方都找不到的完整解决方案:
为 dacpac 声明一个变量。在 Visual studio 内,转到 属性 项目页面,选项卡 SQLCMD Variables
。像这样添加环境变量:
在 sql 脚本中,将变量写入字符串中,这样就不会因 SQL 语法错误而中断构建。它不是 SQL 变量。字符串 '$(env)'
在运行前将被替换为标记:
if ('$(env)' = 'DEV') ...
您可以通过发布项目在 visual studio 中对其进行测试。
最后进入部署任务定义并像这样设置变量:
- task: SqlDacpacDeploymentOnMachineGroup@0
displayName: Install database
inputs:
TaskType: 'dacpac'
DacpacFile: '**/app-db.dacpac'
TargetMethod: 'server'
ServerName: '(localdb)\MSSQLLocalDB'
DatabaseName: 'app-dev'
AuthScheme: 'windowsAuthentication'
AdditionalArguments: /v:env=DEV
我需要 post 部署脚本(数据库项目的一部分)来根据环境设置一些特定的东西 运行。
如何传递脚本可以访问的环境变量?
这是我正在尝试做的事情。 yaml 文件:
- task: SqlDacpacDeploymentOnMachineGroup@0
displayName: Install database
inputs:
TaskType: 'dacpac'
DacpacFile: '**/app-db.dacpac'
TargetMethod: 'server'
ServerName: '(localdb)\MSSQLLocalDB'
DatabaseName: 'app-dev'
AuthScheme: 'windowsAuthentication'
日志:
Starting: Install database
==============================================================================
Task : SQL Server database deploy
Description : Deploy a SQL Server database using DACPAC or SQL scripts
Version : 0.3.23
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/sql-dacpac-deployment-on-machine-group
==============================================================================
*** Could not deploy package.
Warning SQL72013: The following SqlCmd variables are not defined in the target scripts: env.
Error SQL72014: .Net SqlClient Data Provider: Msg 137, Level 15, State 2, Line 14 Must declare the scalar variable "@env".
Error SQL72045: Script execution error. The executed script:
IF (@env = 'DEV')
BEGIN
...
END
这是我在任何地方都找不到的完整解决方案:
为 dacpac 声明一个变量。在 Visual studio 内,转到 属性 项目页面,选项卡
SQLCMD Variables
。像这样添加环境变量:在 sql 脚本中,将变量写入字符串中,这样就不会因 SQL 语法错误而中断构建。它不是 SQL 变量。字符串
'$(env)'
在运行前将被替换为标记:if ('$(env)' = 'DEV') ...
您可以通过发布项目在 visual studio 中对其进行测试。
最后进入部署任务定义并像这样设置变量:
- task: SqlDacpacDeploymentOnMachineGroup@0 displayName: Install database inputs: TaskType: 'dacpac' DacpacFile: '**/app-db.dacpac' TargetMethod: 'server' ServerName: '(localdb)\MSSQLLocalDB' DatabaseName: 'app-dev' AuthScheme: 'windowsAuthentication' AdditionalArguments: /v:env=DEV