【发布时间】:2020-06-08 04:21:21
【问题描述】:
我有一个 Azure DevOps 发布管道,我正在尝试部署一个 SQL 数据库。
这是任务的 YAML:
steps:
- task: SqlAzureDacpacDeployment@1
displayName: 'Azure SQL DacpacTask'
inputs:
azureSubscription: 'Dev/Test Connection'
AuthenticationType: aadAuthenticationIntegrated
ServerName: 'myserver.database.windows.net'
DatabaseName: 'mydb'
DacpacFile: '$(System.DefaultWorkingDirectory)/PATHTOMYFILE.Db.dacpac'
DeleteFirewallRule: false
日志中的错误有些模糊:
[调试]Azure SQL DACPAC 任务失败。 SqlPackage.exe 退出并显示代码 1。查看如何解决故障...
但是日志也这样说:
[debug]Processed: ##vso[task.logissue type=error]*** 发生意外故障:发生一个或多个错误.. [debug]没有添加防火墙规则
我知道必须为尝试访问 Azure SQL 的 IP 添加防火墙规则。我的理解是,该任务将尝试根据正在使用的代理的 IP 地址为我创建防火墙例外。但是日志说“没有添加防火墙规则”。你可能注意到我设置了DeleteFirewallRule: false。我不确定规则是否被创建然后被删除,此设置将使它们可供我检查。但同样,没有一个被创建。
我无法在 Azure 门户中手动添加防火墙规则,因为每次发布管道运行时代理都会不同。有人对如何解决这个问题有任何想法吗?
【问题讨论】:
-
我一直在查看此任务的源 .PS1 脚本。似乎消息“未添加防火墙规则”并不表示失败。这发生在流程结束时。意思是不需要删除任何规则,因为没有添加任何规则。
-
好的。还不确定,但我认为问题根本不是防火墙,我认为这是由于任务中选择的身份验证方法(aadAuthenticationIntegrated)。当我弄清楚时,我会继续测试并更新问题/答案。
标签: azure azure-devops azure-sql-database azure-pipelines-release-pipeline dacpac