Azure devops Azure DevOps“;2017年主办”;生成代理不允许SQL连接

Azure devops Azure DevOps“;2017年主办”;生成代理不允许SQL连接,azure-devops,azure-sql-database,azure-pipelines-release-pipeline,invoke-sqlcmd,azure-devops-hosted-agent,Azure Devops,Azure Sql Database,Azure Pipelines Release Pipeline,Invoke Sqlcmd,Azure Devops Hosted Agent,我有一个非常简单的DacPac,它由Azure DevOps构建并通过发布管道发布。构建工作正常,但管道因连接错误而失败。我已经检查并重新检查了设置。防火墙规则在目标服务器上设置正确,凭据有效,但版本将无法通过。我尝试了许多组合,包括指定端口,但无法使其连接。如果尝试从PowerShell启动连接并调用SqlCmd,则会出现类似的连接错误 有人能解释一下吗 是否存在任何可能妨碍托管代理的端口限制(例如1433被阻止) 我需要更新代理吗 SQL连接是否需要一些额外的配置 谢谢 我得到的错误是: 无

我有一个非常简单的DacPac,它由Azure DevOps构建并通过发布管道发布。构建工作正常,但管道因连接错误而失败。我已经检查并重新检查了设置。防火墙规则在目标服务器上设置正确,凭据有效,但版本将无法通过。我尝试了许多组合,包括指定端口,但无法使其连接。如果尝试从PowerShell启动连接并调用SqlCmd,则会出现类似的连接错误

有人能解释一下吗

是否存在任何可能妨碍托管代理的端口限制(例如1433被阻止)

我需要更新代理吗

SQL连接是否需要一些额外的配置

谢谢

我得到的错误是:

无法连接到目标服务器“.database.windows.net”。 请验证连接信息,例如服务器名称, 目标服务器的登录凭据和防火墙规则。登录 无法获取用户的数据


您需要指定端口:
xxx.database.windows.net,1433

标准SQL发布活动似乎不支持AD Auth。UI仅允许您为SQL用户提供凭据。有一个选项可以通过
/TargetConnectionString
参数为
SqlPackage.exe
提供连接字符串,但是这不起作用,因为UI需要SQL凭据,并且这些凭据不能与
/TargetConnectionString
参数一起使用

我通过从标准PowerShell发布脚本运行
SqlPackage.exe
解决了这个问题

&“C:\Program Files(x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\140\SqlPackage.exe” /SourceFile:“$(System.DefaultWorkingDirectory)/\u MyProj.Infrastructure build/DBScripts/bin/Debug/MyProj.Database.dacpac”/操作:发布 /tcs:“Server=myprodsql.database.windows.net;初始值 Catalog=optimizedb;Persist Security Info=False;用户 ID='$(adminUserEmail)';密码='$(adminUserPassword)';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;身份验证=Active Directory密码”


我以前也遇到过同样的问题,解决这个问题的“最简单”方法是将DevOps拥有的每个IP地址都列在白名单上——遗憾的是,根据您的地理位置,这个名单相当大,而且每周都会更改

我确实编写了一个PS1脚本来解析列表,并确保必要的规则已经就位

然而,这样做有几个明显的问题(还有一个问题不是很明显)

某些区域的IP地址列表非常庞大,以至于Azure数据库无法拥有所有IP地址,它超出了限制

打开IP地址,你(理论上至少)将攻击向量暴露到数据库中。如果有人知道您服务器的地址,他们可以尝试访问它

因此,我尝试了0.0.0.0/allow-access-to-Azure设置,但这似乎并不适用于DevOps


我的最终解决方案是在Azure中启动一个VM并在其上安装构建代理。虽然不理想,但它确实起了作用。

允许我的Azure SQL数据库的所有IP范围为我做到了这一点。 现在我只需要找出并缩小构建代理在Azure DevOps构建管道中运行的IP


Azure DevOps构建任务中防火墙规则的自动设置不起作用。

我为同样的问题苦苦挣扎。我确实通过以下两个步骤解决了这个问题

  • 更改了与其他服务器的数据库连接,一旦该连接成为 成功后,我将其还原回当前服务器
  • 将数据库兼容性级别更改为150以下
  • 创建新版本
  • 下面的参考资料帮助了我。希望这有帮助


    您是否尝试过允许也尝试过将
    startip
    endip
    更改为
    0.0.0
    我在问题中提到,我已经尝试过指定端口。与此情况相同: