【发布时间】:2020-11-30 06:58:52
【问题描述】:
我正在尝试授予应用程序访问数据库的权限。其中一个步骤要求必须在数据库上运行创建用户的脚本。我正在使用 azureSqlAzureDacpacDeployment@1 任务通过管道执行此操作。
Secure Azure SQL Database connection from App Service using a managed identity
- 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-
【问题讨论】:
-
这个任务完成后,你能否使用 Powershell 之类的工具对 SQL 服务器执行临时命令?
-
任务工作正常参数化appname部分是问题。如果我从 powershell 运行 invoke-sqlcmd,我仍然会面临参数化的挑战。
-
还有一个想法:如果您使用 $(AppName) 而不是 [$(AppName)],错误消息会改变吗?我确实查阅了文档,并且应该在运行任务之前扩展 $(variable) 宏,这正是您想要的。
-
得到一个新的错误 'AppName' 脚本变量未定义查看如何解决故障在
标签: azure azure-devops azure-sql-database azure-pipelines azure-managed-identity