使用pyodbc通过Microsoft Intra ID MFA连接SQL Server失败求助
解决pyodbc通过MFA认证连接SQL Server的问题
你的核心问题是:MFA认证的Microsoft Entra ID账号无法通过纯账号密码方式登录SQL Server,这类账号要求走Entra ID的多因素验证流程,而非传统的SQL Server身份验证逻辑。以下是适配MFA的连接方案:
方案:使用ActiveDirectoryInteractive认证方式
这是ODBC驱动支持的、适配MFA认证的标准方式,会触发交互式验证(比如弹出MFA验证窗口、短信验证码等),和你在Azure Data Studio中使用的认证逻辑一致。
修改后的Python代码:
import pyodbc server = 'your-server-name' database = 'your-database-name' driver = '{ODBC Driver 18 for SQL Server}' # 适配MFA的连接字符串,去掉PWD参数,添加Authentication指定认证方式 conn_str = f'DRIVER={driver};SERVER={server};DATABASE={database};Authentication=ActiveDirectoryInteractive' # 如果需要指定特定的Entra ID账号(而非当前系统登录账号),可以加上UID参数: # conn_str = f'DRIVER={driver};SERVER={server};DATABASE={database};UID=your-username@your-domain.com;Authentication=ActiveDirectoryInteractive' conn = pyodbc.connect(conn_str)
关键说明
- 无需保留
PWD参数:MFA账号的密码无法单独用于登录,必须通过Entra ID的验证流程完成身份确认 - 驱动版本要求:确保使用ODBC Driver 17 for SQL Server及以上版本(你当前使用的18版本完全满足)
- 验证流程:运行脚本后,会自动弹出MFA验证窗口(或通过手机/App发送验证请求),完成验证后即可成功连接
内容的提问来源于stack exchange,提问作者NSaini
相关产品推荐
相关产品推荐

