You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用pyodbc连接SQL Server时出现IM002 ODBC驱动错误,求助

解决pyodbc连接SQL Server时的IM002驱动错误

嘿,我一眼就揪出问题根源了——你明明要连接SQL Server,但连接字符串里却用了Microsoft Access的ODBC驱动,这完全不匹配啊!这就是你碰到InterfaceError: ('IM002', '[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)')错误的核心原因。

下面是一步步的修复方案:

1. 替换为正确的SQL Server ODBC驱动

SQL Server有专门的ODBC驱动,推荐使用最新的ODBC Driver 17 for SQL ServerODBC Driver 18 for SQL Server,这两个是微软官方维护的稳定版本。根据你的身份验证方式,用对应的连接字符串:

示例代码

import pyodbc

# 情况1:Windows身份验证(域账号/本地账号信任连接)
odbc_conn_str = (
    'DRIVER={ODBC Driver 18 for SQL Server};'
    'SERVER=你的服务器名称(比如localhost或远程IP);'
    'DATABASE=你的数据库名;'
    'Trusted_Connection=yes;'
    'Encrypt=optional'  # 新版本驱动默认加密,若服务器未配置加密可设为optional
)

# 情况2:SQL Server身份验证(账号密码登录)
# odbc_conn_str = (
#     'DRIVER={ODBC Driver 18 for SQL Server};'
#     'SERVER=你的服务器名称;'
#     'DATABASE=你的数据库名;'
#     'UID=你的用户名;'
#     'PWD=你的密码;'
#     'Encrypt=optional'
# )

conn = pyodbc.connect(odbc_conn_str)

2. 确认驱动已安装并匹配位数

  • 打开「ODBC数据源管理器」:按下Win+R,输入odbcad32.exe回车(注意:32位Python要找32位的管理器,路径是C:\Windows\SysWOW64\odbcad32.exe,64位则是C:\Windows\System32\odbcad32.exe
  • 切换到「驱动程序」标签,查看是否有ODBC Driver 17 for SQL Server或更高版本的驱动
  • 如果没有,下载对应位数的驱动安装即可

3. 额外注意事项

  • 服务器名称要准确:本地SQL Server Express版本通常用.\SQLEXPRESS,完整版用localhost或电脑名;远程服务器要填IP+端口(比如192.168.1.100,1433
  • 确保SQL Server允许远程连接:在SQL Server配置管理器里开启TCP/IP协议,防火墙开放1433端口(如果是远程连接)
  • 避免使用老旧的SQL Server驱动(不带版本号的那种),这类驱动已经停止维护,兼容性差

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

火山引擎 最新活动