Azure和Sql Server端的安装均完全按照Microsoft规范完成。 https://docs.microsoft.com/en-us/azure/app-service/app-service-hybrid-connections。 终结点主机是使用固定端口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还可对机器名:1433正常工作。
这种行为的原因可能是什么?
还有更多要打开的端口或其他设置要更改吗?
编辑:最终解决了此问题的解决方案是一个非常明显的解决方案。原始设置仅针对端口443上的Service Bus中继打开了Premise服务器上的防火墙,就像规范所说的那样就足够了。通过为所有出站TCP / IP地址打开端口443,该连接立即开始从我的Azure Web App开始工作。因此,显然“混合连接”使用的地址更多,但是我还没有找到哪个地址。