Azure 和 Sql Server 端的安装完全按照 https://docs.microsoft.com/en-us/azure/app-service/app-service-hybrid-connections中的 Microsoft 规范完成。端点主机是使用固定端口 1433 的 SQL Server 机器名称。SQL Server 是 Windows 2012 Server 中 SQL Server Express 的命名实例。
该连接在 Azure 和服务器 HCM 端也显示为已连接。
我之前在更开放的网络中进行过几次类似的安装,但没有任何问题,但在这种情况下,SQL Server 安装在“安全网络”上,从服务器打开的唯一 TCP/IP 连接是到端口 443 上的服务总线中继. 但这根据规格应该是可能的。
当我的 Azure Web App 尝试打开 SQL 连接时,它会响应错误:
“连接超时。尝试使用登录前握手确认时超时时间已过。这可能是因为登录前握手失败或服务器无法及时响应。尝试连接到此所花费的持续时间服务器是 - [预登录] 初始化 = 0;握手 = 15028;“
在 Azure 诊断工具中,tcpping 也适用于 machinename:1433。
这种行为的原因可能是什么?
是否还有更多端口要打开或其他设置要更改?
编辑:最终解决这个问题的解决方案是一个非常明显的解决方案。最初的设置只为端口 443 上的服务总线中继打开了本地服务器的防火墙,正如规范所说的那样就足够了。通过为所有出站 TCP/IP 地址打开端口 443,连接立即开始从我的 Azure Web 应用程序工作。所以显然混合连接使用的地址更多,但我没有找到哪些。