New-AzSqlDatabaseImport
从 testdb.bacpac
创建新的 Azure SQL 测试数据库,作为我的 Azure DevOps 部署管道的一部分。
testdb.bacpac
作为 blob 存储在存储帐户中,该命令可以使用访问密钥访问它,但出于安全原因,我现在决定在存储帐户上禁用帐户密钥访问。
所以,现在访问存储的唯一方法是通过 Entra ID 和 RBAC,但是
New-AzSqlDatabaseImport
似乎不支持这一点。我还有哪些其他选项可以导入此 bacpac?
根据您的要求,您可以使用 AzureCLI@2
管道任务中的
az storage blob download命令将
testdb.bacpac
文件从您的存储帐户下载到管道代理上的 System.DefaultWorkingDirectory
,然后导入 testdb.bacpac
在任务SqlAzureDacpacDeployment@1
的帮助下。这是一个示例供您参考。
pool:
vmImage: windows-latest
steps:
- task: AzureCLI@2
inputs:
azureSubscription: '$(ARMSvcCnn)'
scriptType: 'ps'
scriptLocation: 'inlineScript'
inlineScript: |
az storage blob download `
--account-name $(storageAccountName) `
--container-name $(containerName) `
--name testdb.bacpac `
--file $(System.DefaultWorkingDirectory)\testdb.bacpac `
--auth-mode login
- task: SqlAzureDacpacDeployment@1
inputs:
azureSubscription: '$(ARMSvcCnn)'
AuthenticationType: 'servicePrincipal'
ServerName: '$(serverName).database.azure.com'
DatabaseName: 'NewDB-$(Build.BuildId)'
deployType: 'DacpacTask'
DeploymentAction: 'Import'
BacpacFile: '$(System.DefaultWorkingDirectory)\testdb.bacpac'
IpDetectionMethod: 'AutoDetect'
AzureCLI@2
任务和 SqlAzureDacpacDeployment@1
任务均根据 ARM 服务连接引用的底层服务主体(使用 Client Id
和 secret
)进行身份验证。因此,请确保服务主体有足够的权限来访问存储帐户和管理 SQL Server。
希望信息有帮助。