遇到混合连接异常:None 个连接的侦听器在允许的超时时间内接受了连接

Hybrid Connection Exception encountered: None of the connected listeners accepted the connection within the allowed timeout

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

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

我以前使用过混合连接,但在 .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

抛出以下错误。

Hybrid Connection Exception encountered: None of the connected listeners accepted the connection within the allowed timeout.

遗憾的是,我不知道这是什么意思,有没有人遇到过上面的错误,搜索错误只能返回很少的结果。

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

好的,我一个月前解决了这个问题,基本上虽然服务总线地址被列入白名单,但混合连接器会产生多个连接来传输数据,所以虽然握手和初始连接可以与 Azure 通信,但其他任何东西都无法通信,因此时间到了。 我最终将我的中继所在的整个蔚蓝区域列入白名单。You can download all the azure data centre IP ranges here

我发现上面粘贴的 blog Mehdi Ibrahim 非常有用,在过去的 12 个月里,我被那里的每个问题所困扰。