2

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

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

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

我需要更新代理吗?

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

谢谢

我得到的错误是:

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

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

5 回答 5

3

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

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

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

在此处输入图像描述

于 2018-10-22T08:05:06.117 回答
0

我以前也遇到过同样的问题,解决这个问题的“最简单”方法是将 DevOps 拥有的每个 IP 地址列入白名单 - 遗憾的是,根据您的地理位置,该列表非常大,并且每周都会更改。

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

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

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

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

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

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

我的最终解决方案是在 Azure 中启动一个 VM 并在其上安装构建代理。不理想,但确实有效。

于 2019-02-11T12:24:28.747 回答
0

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

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

于 2019-07-09T09:37:02.350 回答
0

我在同样的问题上挣扎了很多。我确实通过执行以下两个步骤来解决它

  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

于 2020-02-25T11:30:36.110 回答
-1

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

于 2018-10-19T14:20:34.850 回答