Sqlalchemy 连接SQL Server 登录失败
实验系统环境
Windows平台
Sqlalchemy 2.0.23
Python 3.10
SQL Server 2012
aioodbc 0.5.0
问题详情
sqlalchemy.exc.InterfaceError: (pyodbc.InterfaceError) ('28000', '[28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用。 (18452) (SQLDriverConnect); [28000] [Microsoft][ODBC Driver 17 for SQL Server]无效的连接字符串属性 (0); [28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]登录失败。该登录名来自不受信任的域,不能与 Windows 身份验证一起使用。 (18452); [28000] [Microsoft][ODBC Driver 17 for SQL Server]无效的连接字符串属性 (0)')

官方写法
SQLAlchemy 2.0 文档中通过 aioodbc 驱动程序支持 Microsoft SQL Server 数据库。
注意:要求 SQLAlchemy版本V2.0.23+,否则会报错找不到插件
“Can't load plugin: sqlalchemy.dialects:aioodbc”
`from sqlalchemy.ext.asyncio import create_async_engine
engine = create_async_engine(
"mssql+aioodbc://scott:tiger@mssql2017:1433/test?"
"driver=ODBC+Driver+17+for+SQL+Server&TrustServerCertificate=yes"
)`
解决方案
1、环境依赖:
1)确认Sqlserver连接配置的ODBC驱动已安装
查看 控制面板\系统和安全\管理工具 ==>> 点击查看 ODBC数据源\驱动程序 ,验证是否有ODBC驱动:

通常系统默认自带名为SQL Server的驱动,所以按理说driver='SQL+Server'应该是OK的。但实际在使用中不行!!!所以还是需要安装ODBC启动。
如 “ODBC Driver 17 for SQL Server”或以后版本
如果没有,官方下载 Version 17 路径:https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver15 或以上版本
2、增加 “IntegratedSecurity=false”
示例如下:
`from sqlalchemy.ext.asyncio import create_async_engine
engine = create_async_engine(
"mssql+aioodbc://scott:tiger@mssql2017:1433/test?" "driver=ODBC+Driver+17+for+SQL+Server&TrustServerCertificate=yes&IntegratedSecurity=false"
)`
解释一下:
1)IntegratedSecurity
集成安全性为true时,意味着使用windows凭据对Server进行登录验证,它将自动与windows登录和密码一起被重写。因此,如果登录到另一个域控制器,那么它将失败。
当集成安全性为false时,Server将使用连接字符串中提供的Server登录名和密码。为此,Server实例必须将其身份验证模式配置为混合模式,即Server和Windows身份验证模式。
2)Trusted_Connection
可信任连接,一开始我设置的是Trusted_Connection=True,主要是使用本地数据库调试使用,设置Trusted_Connection=true,意味着将使用windows凭证验证用户,设不设密码都能访问。但这就涉及到一个安全问题了。所以交付一定要设置Trusted_Connection=false使用用户名和密码验证登陆,以防被别人"登录"、"注入语句"等。
通用写法
`
from sqlalchemy.ext.asyncio import create_async_engine
SQLALCHEMY_DATABASE_URL = (f"mssql+aioodbc://{SQLSERVER_USER}:{SQLSERVER_PASSWORD}@{SQLSERVER_HOST}:{SQLSERVER_PORT}/{SQLSERVER_DATABASE}?"
f"driver={SQLSERVER_DRIVER}&TrustServerCertificate=yes&IntegratedSecurity=false")
engine = create_async_engine(SQLALCHEMY_DATABASE_URL)
`
参考
1、https://docs.sqlalchemy.org.cn/en/20/dialects/mssql.html#module-sqlalchemy.dialects.mssql.aioodbc
2、https://cloud.tencent.com/developer/ask/sof/110044375
Sqlalchemy 连接SQL Server 登录失败的更多相关文章
- Sql Server登录失败问题
1.启动SQL Server 2008 Management Studio,会看到 2. 里面有一个 身份验证.这个 身份验证 的下拉列表里面有两个选项: Windows 身份验证 和 SQL Ser ...
- VS连接SQL Server 2008,并实现登录和注册功能
--------------------- 作者:Cambridge 来源:CSDN 原文:https://blog.csdn.net/cambridgeacm/article/details/797 ...
- 使用IP连接SQL SERVER或者配置为连接字符串失败
使用IP连接SQL SERVER或者配置为连接字符串失败 情景一:当在webconfig文件中使用 <add key="ConnectionString" value=& ...
- SQL Server登录 18456错误
1.以windows验证模式进入数据库管理器. 第二步:右击sa,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密码策略去掉. 第三步:点击状态选项卡:勾选授予和启用. ...
- C#连接SQL server数据库
C#连接SQL server数据库 创建一个Windows应用程序,在窗体中添加TextBox控件.Button控件.Label控件. private void button1_Click(objec ...
- Java连接Sql Server 2008的简单数据库应用
1.从微软官网下载JDBC驱动包 sqljdbc_4.0.2206.100_chs.exe,双击解压文件到指定目录,我的指定目录是: C:\Program Files\Microsoft JDBC D ...
- 栗染-Myeclispe连接SQL Server数据库
第一步,在SQL server方面 这里是以身份验证登录. 这里我是建了一个hw的数据库,其他没啥说的. 第二步,最主要的一部分 因为第一次连接SQL Server数据库,所以就不知道还有这一步.不然 ...
- 小议:部署SharePoint 2013时,无法连接SQL Server问题
最近在给学员培训时发现,个别学员在完毕SharePoint 2013部署时,无法连接SQL Server,两种报错情况,例如以下所看到的: :配置SharePointConnect to SQL Se ...
- python 使用pymssql连接sql server数据库
python 使用pymssql连接sql server数据库 #coding=utf-8 #!/usr/bin/env python#------------------------------ ...
- NetBeans连接SQL server数据库教程
不废话,直接开始 1.下载sqljdbc.jar 可以从微软中国官方网站下载 SQLJDBC微软中国 笔者提供一个网盘链接Sqljdbc.jar 4个压缩包视版本选择,SQL 2012 用sqljdb ...
随机推荐
- nim 9. 遍历文件夹
import std/[os, sugar] const fs = collect(for k in walkDir(r"d:\temp"): k.path) echo fs 文件 ...
- java程序,如何打印详细报错堆栈信息
try { System.out.println(1/0); } catch (final Exception e) { log.error("ERROR", "Erro ...
- FE宝典
前端学科面试宝典 蔡威 [电子邮件地址] HTML5.CSS3..................................................................... ...
- AIRIOT答疑第3期|如何使用物联网平台的可视化组态引擎?
丰富组件,满足千人千面! AIRIOT物联网低代码平台的可视化组态引擎,具备丰富的可视化看板及组件,满足各类工艺流程图.数据可视化需求.支持三维编辑.图形绘制.图表设计等设计方式,PPT模式设计软件界 ...
- CentOS7配置NFS服务并设置客户端自动挂载
在CentOS7中配置NFS服务并设置客户端自动挂载的步骤如下: NFS服务端配置 安装NFS服务: 首先,你需要在CentOS 7服务器上安装NFS服务.你可以使用yum命令来安装: yum ins ...
- 🐬记一次MySQL执行修改语句超时问题
异常问题 原因分析 这个问题发生在开发环境,怀疑是提交事务时终止项目运行,没有提交该事务,造成死锁 调试该事务时时间太长,为什么说有这个原因呢,因为通过查找日志显示 The client was di ...
- Html简要笔记
html在线文档: https://www.w3school.com.cn 怎么创建文件我已经会了 1,html快速入门 <!--文档类型说明 注释 --> <!DOCTYPE ht ...
- CSS——渐变色
<!DOCTYPE html> <html> <head> <style> div { width: 210px; height: 50px; floa ...
- Vue——安装
Vue.js 设计的初衷就包括可以被渐进式地采用.这意味着它可以根据需求以多种方式集成到一个项目中. 将 Vue.js 添加到项目中主要有四种方式: 1.在页面上以 CDN 包的形式导入. <s ...
- LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践
LLM 大模型学习必知必会系列(三):LLM和多模态模型高效推理实践 1.多模态大模型推理 LLM 的推理流程: 多模态的 LLM 的原理: 代码演示:使用 ModelScope NoteBook 完 ...