首页 > 解决方案 > 如何将变量传递给 azure devops 管道中的 SqlAzureDacpacDeployment@1 任务

问题描述

我正在尝试让应用程序访问数据库。其中一个步骤要求必须在数据库上运行创建用户的脚本。我通过 azureSqlAzureDacpacDeployment@1 任务的管道执行此操作。

使用托管标识保护来自应用服务的 Azure SQL 数据库连接

- task: SqlAzureDacpacDeployment@1
      inputs:
        azureSubscription: 'xxxxxxxx (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)'
        AuthenticationType: 'aadAuthenticationIntegrated'
        ServerName: '$(SqlServerName)'
        DatabaseName: '$(SqlDatabaseName)'
        deployType: 'InlineSqlTask'
        SqlInline: |
          CREATE USER [$(AppName)] FROM EXTERNAL PROVIDER;
          ALTER ROLE db_datareader ADD MEMBER [$(AppName)];
          ALTER ROLE db_datawriter ADD MEMBER [$(AppName)];
          GO
        InlineAdditionalArguments: '-v $(ApiAppName)'
        IpDetectionMethod: 'AutoDetect'

ApiAppName = 'AppName=MyApplication'

##[error]The format used to define the new variable for Invoke-Sqlcmd cmdlet is invalid. 
Please use the 'var=value' format for defining a new variable.Check out how to troubleshoot 
failures at https://aka.ms/sqlazuredeployreadme#troubleshooting-

标签: azureazure-devopsazure-sql-databaseazure-pipelinesazure-managed-identity

解决方案


您似乎正在尝试在 SQL 脚本中定义变量。您可以尝试以下链接状态的DECLARE语句和语句:SET

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/variables-transact-sql?view=sql-server-ver15

-- Declare two variables.
DECLARE @AppName nvarchar(50);

-- Set their values.
SET @AppName = 'MyApplication';

推荐阅读