Azure管道将DacPac部署到Azure SQL-如何添加防火墙规则?

问题描述 投票:0回答:1

我有一个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门户中手动添加防火墙规则,因为每次发布管道运行时,代理都会有所不同。是否有人对如何解决此问题有任何想法?

谢谢,安迪

azure azure-devops azure-sql-database azure-pipelines-release-pipeline dacpac
1个回答
0
投票

根本没有清除此任务的错误消息。在尝试了多种解决方法后,我尝试了更改身份验证模式。

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

一旦我这样做,它就会起作用。因此,问题根本不是防火墙。

© www.soinside.com 2019 - 2024. All rights reserved.