You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure机器学习工作室中R连接SQL数据库失败求助(Python可正常连接)

解决Azure ML中R通过ODBC连接SQL Server的0x2746错误

问题场景

在Azure机器学习工作室计算实例中,使用R的odbc包连接公司SQL数据库时触发错误:

Error: nanodbc/nanodbc.cpp:1118: 00000: [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: Error code 0x2746 [Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection

但使用Python的pyodbc包,拆分SERVER与PORT参数的方式可成功连接;计算实例已安装对应ODBC驱动,终端运行R脚本也出现相同错误。

解决建议

1. 拆分SERVER与PORT参数

R的odbc包对Server,port格式的解析逻辑和Pythonpyodbc存在差异,尝试分开指定参数:

con <- odbc::dbConnect(odbc::odbc(),
                    DRIVER="ODBC Driver 17 for SQL Server",
                    SERVER="Server",
                    PORT=1433,
                    DATABASE="Database",
                    UID="User",
                    PWD="Password")

2. 强制指定TLS版本

错误码0x2746多因TLS版本不兼容导致,可在连接时显式指定TLS 1.2(多数企业SQL Server的要求版本):

con <- odbc::dbConnect(odbc::odbc(),
                    DRIVER="ODBC Driver 17 for SQL Server",
                    SERVER="Server",
                    PORT=1433,
                    DATABASE="Database",
                    UID="User",
                    PWD="Password",
                    Encrypt="yes",
                    TrustServerCertificate="no",
                    TLS_Version="TLSv1.2")

3. 直接指定驱动文件路径

部分环境下驱动名称匹配存在异常,可在R中直接指定驱动的完整路径(Linux示例,Windows替换为对应dll路径):

con <- odbc::dbConnect(odbc::odbc(),
                    DRIVER="/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.10.so.2.1",
                    SERVER="Server",
                    PORT=1433,
                    DATABASE="Database",
                    UID="User",
                    PWD="Password")

可通过终端命令确认驱动路径:

odbcinst -q -d

4. 验证网络连通性

在计算实例终端测试SQL Server端口的连通性:

nc -zv Server 1433

若连通失败,需检查计算实例的网络安全组是否允许1433端口 outbound流量,以及公司SQL Server防火墙是否将Azure ML计算实例IP加入白名单。


内容的提问来源于stack exchange,提问作者nowyouredoingit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 08:12:17