sql-server - 从 Azure Web 应用程序(通过 Azure S2S VPN)查询本地 SQL Server 失败

标签 sql-server azure azure-web-app-service azure-virtual-network azure-vpn

我们的基础架构团队致力于在我们的 Azure 订阅和本地防火墙之间配置站点到站点的 Azure VPN 连接,基本上遵循 these steps 。为了测试这一点,我们创建了一个简单的 Azure Web 应用程序,该应用程序对位于防火墙后面的本地 SQL Server 进行查询。

此网络应用程序在本地运行没有任何问题。此外,相同的代码和连接字符串在编译为控制台应用程序并在 Azure 虚拟机上运行时也可以正常工作。但是当部署到 Azure 中的 Web 应用程序时,与 SQL Server 的连接失败:

[Win32Exception (0x80004005): The wait operation timed out]

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - The wait operation timed out.)]

Azure VM 和 Web 应用程序均配置为指向 Azure VNet。似乎有什么东西阻止了 Web 应用程序在其默认端口 (1433) 上与 SQL Server 进行通信。如果我打开 Web 应用程序的调试控制台并使用默认端口 (80) 在 SQL Server 上执行 tcpping,它将成功返回。但是到端口 1433 的 tcpping 超时。

Azure 网络安全组似乎并未阻止该端口:

enter image description here

我发现的与我们的特定设置相关的唯一解决方案基本上可以归结为“use Azure Hybrid Connections instead ”,这不是我们的首选。

最佳答案

与 Microsoft 支持人员合作后,进行了以下更改,VNet 集成现已开始运行。对于其中一些问题缺乏详细信息,我深表歉意,但我们的基础设施团队完成了大部分故障排除工作。希望其中一些项目能够帮助其他人指明其设置解决方案的方向:

  • 最初,连接是通过公共(public)互联网而不是 VNET 集成和 VPN 建立的。我们发现 VNET 集成由于使用的隧道类型而失败。 Azure 应用服务要求隧道类型为 SSTP。一旦我们更改了它并同步了网络,我们就能够通过 SQL Server 的私有(private) IP 对 SQL Server 进行 TCP 通信。
  • 我们注意到它必须允许在本地网络上使用点到站点地址池。作为解决方法,我们决定使用新的 VNET 集成(预览版)。我们创建了一个空子网并且能够使用这个新功能。
  • 我们注意到应用服务没有使用自定义 DNS。为了解决此问题,我们在虚拟网络以及网络应用的应用设置(“WEBSITE_DNS_SERVER”)中添加了 DNS。

关于sql-server - 从 Azure Web 应用程序(通过 Azure S2S VPN)查询本地 SQL Server 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54524626/

相关文章:

sql-server - T-SQL 时间平均

python - 如何在 Azure 应用服务中将 OpenCV 与 Python 结合使用?

c# - Azure 应用程序从 machine.config 中获取连接字符串

sql-server - 如何在 VB.net 中将多行从 datagridview 插入到 SQL 数据库?

sql-server - 使用 BCP 将文件输出为 ANSI 为 UTF-8 MSSQL 2012

sql-server - 如何从具有引用主键列的列的大表(12k 记录)中有效地获取有序的层次列表

Azure VMSS实例 "Latest model"含义

javascript - 基于函数结果的 Azure 条件数据驱动样式

.net - 无法解析属性 'CosmosDBAttribute.ConnectionStringSetting' 的值,但它已添加到应用程序设置中

iis - 在 Azure 网站上禁用池回收