我有一个 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
日志中的错误有些模糊:
[debug]The Azure SQL DACPAC task failed. SqlPackage.exe exited with code 1.Check out how to troubleshoot failures at...
但是日志也这样说:
[debug]Processed: ##vso[task.logissue type=error]*** An unexpected failure occurred: One or more errors occurred.. [debug]No Firewall Rule was added
我知道必须为尝试访问 Azure SQL 的 IP 添加防火墙规则。我的理解是,该任务将尝试根据正在使用的代理的 IP 地址为我创建防火墙异常(exception)。但日志显示“未添加防火墙规则”。您可能会注意到我设置了 DeleteFirewallRule: false
。我不确定规则是否被创建然后删除,此设置将使它们可供我检查。但同样,没有创建任何内容。
我无法在 Azure 门户中手动添加防火墙规则,因为每次发布管道运行时代理都会不同。有人对如何解决这个问题有任何想法吗?
最佳答案
此任务的错误消息根本不是很清楚。在尝试了多种不同的方法来解决此问题后,我尝试更改身份验证模式。
steps:
- task: SqlAzureDacpacDeployment@1
displayName: 'Azure SQL DacpacTask'
inputs:
azureSubscription: 'Dev/Test Connection'
ServerName: 'myserver.database.windows.net'
DatabaseName: 'mydb'
SqlUsername: '$(dbdeployuser)'
SqlPassword: '$(dbdeploypassword)'
DacpacFile: '$(System.DefaultWorkingDirectory)/PATHTOMYFILE.Db.dacpac'
DeleteFirewallRule: false
一旦我这样做了,它就起作用了。所以问题根本不在于防火墙。
关于Azure Pipeline 将 DacPac 部署到 Azure SQL - 如何添加防火墙规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60377583/