使用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 Server或ODBC 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




