首页 > 解决方案 > 遇到混合连接异常:所有连接的侦听器均未在允许的超时时间内接受连接

问题描述

我有一个到本地 MSSQL 服务器的混合连接,我正在尝试从 Node.js 应用程序访问它。

Node.js 应用程序最初设置为连接到 Azure DB,但要求已更改,现在需要从本地服务器读取数据。

我以前使用过混合连接,但在 .net aspx 应用程序中使用过。

我从应用程序中得到的最初错误是

 { 
    ConnectionError: Failed to connect to SERVERNAME:1433 in 15000ms
    at ConnectionError (D:\home\site\wwwroot\node_modules\tedious\lib\errors.js:12:12)
    at Connection.connectTimeout (D:\home\site\wwwroot\node_modules\tedious\lib\connection.js:944:28)
    at Timeout._onTimeout (D:\home\site\wwwroot\node_modules\tedious\lib\connection.js:913:16)
    at ontimeout (timers.js:365:14)
    at tryOnTimeout (timers.js:237:5)
    at Timer.listOnTimeout (timers.js:207:5)
    message: 'Failed to connect to SERVERNAME:1433 in 15000ms',
    code: 'ETIMEOUT' 
 }

所以我做了所有常用的连接测试,检查 SQL 用户和权限等。

一切都指向混合连接,但中继在 Azure 门户和服务器上的混合连接管理器中都显示为已连接。

所以启用了混合连接日志,看看这是否会给我更多信息。

HYBRIDCONNECTIVITY_LOGGING_ENABLED 1

这引发了以下错误。

遇到混合连接异常:所有连接的侦听器均未在允许的超时时间内接受连接。

可悲的是我不知道这意味着什么,有没有人遇到过上面的错误,搜索错误带来的结果很少。

如果我使用 Azure 中的 SQLCMD,我会遇到同样的错误,我尝试了完全限定的服务器名称,我检查了所需的端口和防火墙设置,如果我关闭 443 https 出站连接器显示已断开连接。

标签: azureazureservicebusazure-hybrid-connections

解决方案


好的,我在一个月前解决了这个问题,基本上虽然服务总线地址被列入白名单,但混合连接器会产生多个连接来传输数据,所以虽然握手和初始连接可以与 Azure 通信,但其他任何东西都不能,因此超时。我最终将我的中继所在的整个 azure 区域列入白名单。您可以在此处下载所有 azure 数据中心 IP 范围

我发现上面粘贴的Mehdi Ibrahim博客非常有用,在过去的 12 个月里,我遇到了其中的每一个问题。


推荐阅读