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

Linux(Debian)环境下Python远程连接SQL Server失败求助

解决Debian下Python连接SQL Server的问题

针对pyodbc的Kerberos凭证错误

你的pyodbc连接字符串虽然设置了Trusted_Connection=no,但ODBC Driver 18 for SQL Server默认会优先尝试Kerberos认证,导致出现SSPI相关错误。可以通过以下方式修复:

  • 明确指定认证方式为SQL密码登录
    修改连接字符串,添加Authentication=SqlPassword参数,强制使用SQL Server账号密码认证:

    import pyodbc 
    cnxn = pyodbc.connect('DRIVER={ODBC Driver 18 for SQL Server};'
        'SERVER=192.168.108.186,1433;'  # 端口直接跟在服务器地址后用逗号分隔,避免PORT参数可能的冲突
        'DATABASE=teste;'
        'UID=username;'
        'PWD=my_password;'
        'Trusted_Connection=no;'
        'TrustServerCertificate=yes;'
        'Authentication=SqlPassword')
    cursor = cnxn.cursor()
    
  • 验证ODBC驱动安装完整性
    确保Debian上已正确安装ODBC Driver 18:

    # 导入微软源
    curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
    curl https://packages.microsoft.com/config/debian/11/prod.list > /etc/apt/sources.list.d/mssql-release.list
    apt-get update
    ACCEPT_EULA=Y apt-get install -y msodbcsql18
    

针对pymssql的连接失败问题

pymssql依赖FreeTDS库,连接失败通常是FreeTDS配置不正确导致的:

  • 安装并配置FreeTDS
    先安装FreeTDS:

    apt-get install -y freetds-dev freetds-bin
    

    编辑/etc/freetds/freetds.conf,添加或修改以下配置:

    [sqlserver]
        host = 192.168.108.186
        port = 1433
        tds version = 7.4  # 匹配SQL Server版本,SQL Server 2016+建议用7.4
        client charset = UTF-8
    
  • 修改pymssql连接代码
    可以使用配置好的别名,或者直接指定TDS版本:

    import pymssql
    
    # 方式1:使用freetds.conf中的别名
    conn = pymssql.connect(server='sqlserver', user='username', password='my_password', database='teste')
    
    # 方式2:直接指定TDS版本
    conn = pymssql.connect(
        server='192.168.108.186',
        user='username',
        password='my_password',
        database='teste',
        tds_version='7.4'
    )
    

通用排查步骤

  • 网络连通性检查:在Debian机器上执行telnet 192.168.108.186 1433或nc -zv 192.168.108.186 1433,确认端口是否开放。
  • SQL Server配置检查:确保SQL Server允许远程连接,启用了SQL Server身份认证,且指定的账号有访问teste数据库的权限。
  • 防火墙规则检查:检查Debian本地防火墙和SQL Server所在机器的防火墙,是否允许1433端口的双向流量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 19:27:35