使用SQLAlchemy以非本地账号连接SQL Server失败求助
解决SQL Server登录失败(错误18456)的常见方案
检查驱动兼容性
你当前用的{SQL Server}是旧版ODBC驱动,可能和现代SQL Server的身份验证逻辑不兼容。换成新版驱动试试:connection_string = "DRIVER={ODBC Driver 17 for SQL Server};SERVER=server;DATABASE=db;UID=username;PWD=password" connection_url = URL.create("mssql", query={"odbc_connect": connection_string})注意要先在本地安装对应版本的ODBC驱动(推荐17或18版)。
核对服务器名称格式
确认SERVER参数和SSMS里的一致:如果是命名实例,要写成server\instance_name;如果用端口连接,格式是server,port(默认端口1433)。直接复制SSMS中能成功登录的服务器名称即可。确认SQL Server身份验证模式
检查SQL Server是否开启了混合身份验证模式(同时支持SQL Server和Windows身份验证)。如果只启用了Windows身份验证,SQL账户会无法登录。检查账户状态与权限
- 确认该SQL账户没有被禁用或锁定(多次失败登录可能触发账户锁定)
- 确保账户拥有目标数据库的登录权限
尝试SQLAlchemy标准URL格式
可以绕开ODBC连接字符串的写法,直接用SQLAlchemy的标准构造方式:connection_url = URL.create( "mssql+pyodbc", username="username", password="password", host="server", database="db", query={"driver": "ODBC Driver 17 for SQL Server"} )
内容的提问来源于stack exchange,提问作者yomayo
相关产品推荐
相关产品推荐

