PowerBI连接Azure SQL Server出现121信号量超时错误,寻求原因解析
问题现象
连接Azure SQL Server时触发以下错误:
已成功与服务器建立连接,但在预登录握手期间发生错误。(provider: TCP Provider, error: 0 - 信号量超时时间已过期。) (Microsoft SQL Server, Error: 121)
排查后确认:同一客户端电脑、网络环境、Azure SQL Server实例、PowerBI桌面版本下,使用OLE DB provider可正常连接,但默认provider无法使用,且几周前连接功能正常。
可能的根源
默认ODBC驱动的预登录配置变更
PowerBI默认依赖的ODBC驱动(如ODBC Driver 17 for SQL Server)可能因Windows自动更新、驱动版本升级,导致预登录阶段的超时阈值、加密协议协商逻辑发生变化。这些变化与Azure SQL Server当前的握手规则不匹配,触发超时;而OLE DB驱动的握手逻辑、超时参数更宽松或与服务器规则兼容,因此能成功连接。驱动版本兼容性bug
近期自动更新的默认ODBC驱动版本存在兼容性问题,与Azure SQL Server的TLS版本要求、登录数据包大小限制等特性冲突。OLE DB驱动未更新或使用的版本未受该bug影响,所以连接正常。网络环境对不同驱动的数据包处理差异
当前网络中的防火墙、代理或深层包检测工具,对默认ODBC驱动的预登录数据包处理延迟更高,超出了信号量超时阈值;而OLE DB驱动的数据包格式、传输策略不同,避开了这类延迟问题。Azure SQL Server端的连接阈值调整
近期Azure SQL Server可能调整了预登录阶段的并发连接限制、握手超时时间等配置。默认驱动的连接请求刚好触发了这些阈值,而OLE DB驱动的连接协议未被该限制影响。本地系统的网络栈干扰
本地安装的安全软件、VPN或网络优化工具,对默认ODBC驱动的网络请求进行了拦截或延迟处理,但未干扰OLE DB驱动的请求路径,导致两者连接结果不同。
内容的提问来源于stack exchange,提问作者sadbuttrue

