gpt4 book ai didi

azure - 通过 Azure DevOps Pipelines 部署 DACPAC 时出错

转载 作者:行者123 更新时间:2023-12-02 07:44:29 32 4
gpt4 key购买 nike

我正在通过 Azure DevOps Pipelines 部署 Azure SQL DB 来刷新 CI/CD 流程。我正在使用 Adventure Works 数据库并设置一个导入架构的 Visual Studio 项目。

我配置了一个管道来发布 dacpac 并使用 SqlAzureDacpacDeployment@1 运行后续部署,但收到以下错误:

2020-10-10T02:36:34.1421137Z ##[error]Unable to connect to target server 'server.database.windows.net'. Please verify the connection information such as the server name, login credentials, and firewall rules for the target server.
2020-10-10T02:36:34.1605855Z ##[error]Windows logins are not supported in this version of SQL Server.
2020-10-10T02:36:34.2143924Z ##[error]The Azure SQL DACPAC task failed. SqlPackage.exe exited with code 1.Check out how to troubleshoot failures at https://aka.ms/sqlazuredeployreadme#troubleshooting-
2020-10-10T02:36:34.2522414Z ##[section]Finishing: SqlAzureDacpacDeployment

我使用的是最新的 Windows,这是我的 YAML 管道:

trigger:
- master

pool:
vmImage: 'windows-latest'


jobs:
- job: BuildDeploySQL
variables:
- group: SQLServerLogin
steps:
- task: VSBuild@1
inputs:
solution: '**\*.sln'
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Pipeline.Workspace)'
publishLocation: 'pipeline'
- task: SqlAzureDacpacDeployment@1
inputs:
azureSubscription: 'Subscription Name here'
AuthenticationType: 'server'
ServerName: 'server.database.windows.net'
DatabaseName: 'AdventureWorks'
SqlUsername: 'sqladmin'
SqlPassword: ${{ variables.Password }}
deployType: 'DacpacTask'
DeploymentAction: 'Publish'
DacpacFile: '$(Pipeline.Workspace)\s\AdventureWorks\bin\Debug\*.dacpac'
IpDetectionMethod: 'AutoDetect'

我尝试从本地计算机进行部署,并且使用相同的 sql 凭据成功了。此外,我已确认 SQL 数据库已允许启用 Azure 服务。我还尝试将 dacpac 部署到新的空数据库并收到相同的错误。

我确实相信这可能只是一个通用错误消息,因为我的部署日志确实显示与服务器的成功连接:

2020-10-10T02:36:18.7912964Z Invoke-Sqlcmd -ServerInstance "server.database.windows.net" -Database "AdventureWorks" -Username "sqladmin"  -Password ******  -Inputfile 
....
2020-10-10T02:36:33.0554895Z Initializing deployment (Start)

** 更新只是为了排除我确实创建了一个具有 DBO_owner 权限的新 SQL 登录名并使用它运行部署并收到相同的错误消息。

最佳答案

上述错误可能是因为构建代理 IP 未列入 Azure SQL 数据库的防火墙规则的允许列表。请参阅此链接关于 IP ranges for Microsoft-hosted agents .

您可以检查 Azure 数据库的防火墙规则设置,并尝试允许所有 IP 范围。

您还可以添加 Azure CLi 任务来获取代理 IP,并为 Azure 数据库设置防火墙规则,以允许代理 IP 在管道中动态运行。请参阅this thread .

steps:
- task: AzureCLI@2
displayName: 'Azure CLI '
inputs:
azureSubscription: 'azureSubscription'
scriptType: ps
scriptLocation: inlineScript
inlineScript: |

$agentIp = (New-Object net.webclient).downloadstring("http://checkip.dyndns.com") -replace "[^\d\.]"

az sql server firewall-rule create -g $(rg) -s $(server) -n test --start-ip-address $agentIp --end-ip-address $agentIp

您还可以创建 self-hosted agent在本地计算机/Azure VM 上。并在此自托管代理上运行您的管道。请注意将您的本地计算机 IP 列入 Azure 数据库的白名单。

关于azure - 通过 Azure DevOps Pipelines 部署 DACPAC 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64289508/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com