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

Pyodbc无法启用MARS,即使SQL原生客户端显示‘MARS: yes’

解决Pyodbc连接SQL Server时MARS未生效的问题
  • 别依赖DSN的MARS配置,直接在连接字符串里明确指定参数才靠谱,Windows环境下MARS_Connection=Yes完全有效,把你的连接代码改成这样试试:

    cnxn = pyodbc.connect(DSN="83something",
                          UID="something",
                          PWD="something",
                          MARS_Connection="Yes")
    

    或者干脆不用DSN,写完整的连接字符串避免歧义:

    cnxn = pyodbc.connect(
        "DRIVER={ODBC Driver 17 for SQL Server};"
        "SERVER=你的服务器地址;"
        "DATABASE=目标数据库;"
        "UID=something;"
        "PWD=something;"
        "MARS_Connection=Yes"
    )
    
  • 检查pyodbc版本,确保是4.0.30及以上的新版本,旧版本可能对MARS参数支持有问题。可以用pip show pyodbc查看版本,不够的话用pip install --upgrade pyodbc升级。

  • 别纠结SQL_MAX_CONCURRENT_ACTIVITIES返回1的问题,有时候这个值的返回可能和驱动实现有关,最直接的测试方式是跑实际并发操作:比如打开两个游标同时执行查询,如果MARS没启用会报错“连接忙”,能正常执行就说明MARS已经生效。示例测试代码:

    cnxn = pyodbc.connect(...)  # 带MARS参数的连接
    cursor1 = cnxn.cursor()
    cursor2 = cnxn.cursor()
    
    cursor1.execute("SELECT * FROM 你的表")
    print(cursor1.fetchone())
    
    cursor2.execute("SELECT * FROM 另一个表")
    print(cursor2.fetchone())
    
  • 尽量用ODBC Driver 17 for SQL Server,原生客户端11.0虽支持MARS,但微软已停止更新维护,新版驱动在MARS兼容性上表现更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:30:05