Ubuntu环境下用pyodbc+SQLAlchemy连SQL Server遇登录超时问题
解决Ubuntu下pyodbc+SQLAlchemy连接SQL Server超时问题
可能的错误点及修复方案
1. 驱动名称的URL解析异常
你的连接字符串中驱动名称包含空格,直接拼接会导致URL解析出错。推荐使用odbc_connect传递完整ODBC参数的方式,避免解析问题:
from sqlalchemy import create_engine import urllib.parse drv = 'ODBC Driver 18 for SQL Server' # 用大括号包裹驱动名,同时添加加密相关参数 odbc_params = urllib.parse.quote_plus(f'DRIVER={{{drv}}};SERVER={server_ip},1433;DATABASE={db_name};UID={user};PWD={passwd};Encrypt=yes;TrustServerCertificate=yes') con_string = f'mssql+pyodbc:///?odbc_connect={odbc_params}' con = create_engine(con_string)
2. 默认加密设置导致连接失败
ODBC Driver 18 for SQL Server默认强制加密连接,若你的SQL Server未配置可信证书,Ubuntu环境下会因证书验证失败触发超时。必须添加TrustServerCertificate=yes参数跳过证书验证,同时显式设置Encrypt=yes(若无需加密可设为Encrypt=no,但不推荐非安全网络环境使用)。
3. 网络连通性问题
- 执行
ping {server_ip}确认Ubuntu服务器能连通SQL Server主机 - 用
telnet {server_ip} 1433测试端口是否开放,若不通需在SQL Server主机开放1433端口,同时确保Ubuntu防火墙允许出站访问该端口 - 检查SQL Server是否启用了TCP/IP协议(在SQL Server配置管理器中确认)
4. 认证方式配置错误
确保SQL Server已启用SQL Server身份认证(而非仅Windows认证),且你使用的用户名、密码拥有目标数据库的访问权限。
内容的提问来源于stack exchange,提问作者data_b77
相关产品推荐
相关产品推荐

