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ć
相关产品推荐
相关产品推荐

