【问题标题】:Azure SQL Managed Instance Connection in Virtual Machine虚拟机中的 Azure SQL 托管实例连接
【发布时间】:2022-01-24 04:48:54
【问题描述】:

我们已经设置了应用程序托管在 Azure 虚拟机中的位置,并且我们的数据库托管在 SQL 托管实例中。两者都在同一个区域,相同的订阅,但不同的 Vnet 是 SQL 托管实例的要求。

我们已将 IP 列入白名单,在 NSG 上打开 VM 和 SQL 实例的端口。

我们能够在 SSMS、本地机器以及 VM 本身中打开 SQL。但由于某种原因,同一台服务器在添加到连接字符串时无法工作。

我们已尝试使用 1433 和 3342 端口。 我们尝试过代理与重定向 我们也尝试过 VNET Peering,但似乎没有任何效果,我们总是遇到以下错误:

在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。 (提供者:TCP Provider,错误:0 - 连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。)'

我们的应用程序基于 .Net。

我们正在将我们的服务器从本地迁移到 Azure。

我们将不胜感激。

谢谢。

【问题讨论】:

  • 在连接字符串中添加时不起作用 什么连接字符串? Web 应用程序中使用的连接字符串? Web 应用程序在哪里运行?我猜不在您正在测试的虚拟机上。
  • 嗨尼克,是的,我们的 .Net 应用程序的 web.config 中的连接字符串,类似于 Server=tcp:XXXXXXXXXXXX.database.windows.net,1433;Persist Security Info=False;User ID= XXXXXX;Password=XXXXXXXXX;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;
  • 是的,但是您的网络应用在哪里运行?它是在 VM 上运行还是在例如 App Service 中运行?无论您的 Web 应用程序在哪里运行,它都没有连接性。在您弄清楚它的运行位置之前,您无法解决此问题。
  • 它在虚拟机上运行。但我们找到了解决方案。虽然 VNET 对等仍然无法正常工作,但在完成了 Vnet/NSG/RouteTables 中的所有设置之后。似乎公共链接一直在工作。私有和公共端点在链接中具有“公共”文本的差异。我们之前错过了这一点。谢谢

标签: asp.net azure azure-virtual-machine azure-virtual-network azure-sql-managed-instance


【解决方案1】:

由于虚拟机和 SQL 托管实例都在不同的 VNET 中,我们需要进行 VNET 对等以允许虚拟机中的应用程序连接到 SQL Server。

现在,我们需要编写 NSG 规则以允许虚拟机通过 1433、3342 和 4022 端口连接到 SQL 服务器。

那么你在虚拟机中的应用就可以连接到SQL server了

要通过公共链接访问 SQL Server,我们必须将虚拟机的 IP 地址列入白名单。

要通过私有端点访问 SQL 服务器,我们需要将私有端点托管在 SQL 服务器的同一 VNET 中。然后通过 VNET 对等互连,VM 中的应用程序可以访问 SQL 服务器。

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 2013-04-04
    • 2016-05-24
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多