我有一个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] Azure SQL DACPAC任务失败。 SqlPackage.exe退出,代码为1。请在以下位置查看如何解决故障...
但是,日志也这样说:
[debug]已处理:## vso [task.logissue type = error] ***发生意外故障:发生一个或多个错误。[debug]未添加防火墙规则
我知道必须为尝试访问Azure SQL的IP添加防火墙规则。我的理解是,该任务将尝试根据所使用代理的IP地址为我创建防火墙例外。但是日志显示“未添加防火墙规则”。您可能会注意到我已经设置了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
一旦我这样做,它就会起作用。因此,问题根本不是防火墙。