Azure DevOps "Hosted 2017" 构建代理不允许 SQL 连接

Azure DevOps "Hosted 2017" build agent not allowing SQL connection

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

任何人都可以解释一下吗?

Hosted 2017 代理是否有任何端口限制(例如 1433 被阻止)?

我需要更新代理吗?

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

谢谢

我得到的错误是:

Unable to connect to target server '.database.windows.net'. Please verify the connection information such as the server name, login credentials, and firewall rules for the target server. Login failed for user 'data...

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

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

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

& "C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\DAC0\SqlPackage.exe" /SourceFile:"$(System.DefaultWorkingDirectory)/_MyProj.Infrastructure build/DBScripts/bin/Debug/MyProj.Database.dacpac" /Action:Publish /tcs:"Server=myprodsql.database.windows.net;Initial Catalog=OptimisedDb;Persist Security Info=False;User ID='$(adminUserEmail)';Password='$(adminUserPassword)';MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=Active Directory Password"

我以前遇到过同样的问题,'easiest' 解决这个问题的方法是将 DevOps 拥有的每个 IP 地址列入白名单 - 遗憾的是,根据您的地理位置,该列表非常大它每周更改一次。

我确实写了一个 PS1 脚本来解析列表并确保必要的规则到位。

https://www.microsoft.com/en-nz/download/details.aspx?id=41653

然而,这样做有一些明显的(少一个)问题...

某些地区的IP地址列表很大,大到Azure数据库无法全部拥有,超出了限制。

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

因此我确实尝试了 0.0.0.0/允许访问 Azure 设置 - 但这似乎对 DevOps 实际上不起作用。

我的最终解决方案是在 Azure 中启动一个虚拟机并将构建代理安装到它上面。不理想,但确实有效。

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

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

我在同样的问题上苦苦挣扎。我确实通过以下两个步骤设法修复了它

  1. 将数据库连接更改为另一台服务器 成功我将它恢复到当前服务器。
  2. 将数据库兼容级别更改为低于 150。
  3. 创建了新版本

以下参考资料对我有所帮助。希望这有帮助。

https://geeklearning.io/dacpac-and-azure-sql-updates/

https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/SqlAzureDacpacDeploymentV1/README.md#troubleshooting-i