【问题标题】:Azure Pipeline Deploy DacPac to Azure SQL - How to add firewall rule?Azure Pipeline 将 DacPac 部署到 Azure SQL - 如何添加防火墙规则?
【发布时间】: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


【解决方案1】:

此任务的错误消息根本不是很清楚。在尝试了很多不同的方法来解决这个问题后,我尝试更改身份验证模式。

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

一旦我这样做了,它就奏效了。所以问题根本不在于防火墙。

【讨论】:

  • 很高兴知道问题已经解决。您可以接受它作为答案,它可以帮助遇到同样问题的人。谢谢!
  • 啊,谢谢提醒。我认为如果我回答自己的问题,它会自动“接受”。
  • 感谢您返回解决方案。我还没有通过服务连接确认aadAuthenticationIntegrated 是否有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2019-04-26
  • 1970-01-01
相关资源
最近更新 更多