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

Linux下通过ODBC连接SQL Server 2014时出现0x2746(10054)错误

问题背景
  • 系统环境:Ubuntu 22.04.1 LTS,pyodbc 4.0.35,OpenSSL 3.0.2
  • 已完成Microsoft ODBC Driver 18 for SQL Server的官方步骤安装,通过pyodbc可检测到驱动正常
  • 修改连接字符串为Driver={ODBC Driver 18 for SQL Server}后,出现连接错误:
    [Microsoft][ODBC Driver 18 for SQL Server]TCP Provider: Error code 0x2746 (10054) (SQLDriverConnect)
    
解决方案

1. 修复TLS版本兼容问题

Ubuntu 22.04默认使用OpenSSL 3.0并启用TLS 1.3,但ODBC Driver 18与部分旧版SQL Server存在TLS 1.3握手兼容性问题。修改连接字符串,强制指定TLS 1.2并配置加密选项:

cnxn_str = (
    "Driver={ODBC Driver 18 for SQL Server};"
    "Server=xx;"  # 替换为你的SQL Server地址/实例名
    "Database=xx;"  # 替换为目标数据库名
    "UID=xx;"  # 替换为登录账号
    "PWD=xx;"  # 替换为登录密码
    "Encrypt=yes;"
    "TrustServerCertificate=yes;"
    "TLS_Version=TLS1.2"
)
myCon = pyodbc.connect(cnxn_str)

注:TrustServerCertificate=yes仅适用于测试环境,生产环境需配置合法SSL证书后移除该参数。

2. 验证网络连通性

检查Ubuntu服务器与SQL Server的网络端口是否可达:

  • 用nc命令测试默认端口1433(若使用自定义端口,替换为对应端口):
    nc -zv <SQL_SERVER_IP> 1433
    
  • 若不通,需确认:
    • SQL Server已启用TCP/IP协议(在SQL Server配置管理器中开启)
    • SQL Server所在服务器的防火墙已开放对应端口
    • 网络路由无拦截

3. 确认登录凭据与权限

  • 确保UID和PWD正确,且该账号拥有目标数据库的访问权限
  • 确认SQL Server已启用混合身份验证模式(若使用SQL Server账号登录)

4. 修复驱动依赖

重新安装ODBC驱动依赖的OpenSSL组件,确保依赖完整:

sudo apt-get install --reinstall libssl-dev libssl3

内容的提问来源于stack exchange,提问作者Anel Hodžić

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 03:01:00