首页 新闻 赞助 找找看

Python链接SQLServer报错“不能产生 SSPI 上下文”

0
[待解决问题]

请问这种情况是因为什么呀?我连接的是云服务器,并且已经开启1433端口了。

代码如下:

import pyodbc
import pandas

connection = pyodbc.connect('DRIVER={SQL Server}; SERVER=...; DATABASE=BSY; USER=sa; PASSWORD=******')

query = "select * from GROUP_SUPPLIER where GROUP_SUPPLIER_CODE like 'GYS100'"

df = pandas.read_sql_query(query, connection)

print(df)

===========================
报错信息:

Traceback (most recent call last):
File "C:\Users\cyjav\PycharmProjects\pythonProject\P29_链接SQLServer数据库.py", line 5, in <module>
connection = pyodbc.connect('DRIVER={SQL Server}; SERVER=...; DATABASE=BSY; USER=sa; PASSWORD=...')
pyodbc.Error: ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver]不能产生 SSPI 上下文 (11001) (SQLDriverConnect); [HY000] [Microsoft][ODBC SQL Server Driver]无效的连接字符串属性 (0); [HY000] [Microsoft][ODBC SQL Server Driver]不能产生 SSPI 上下文 (11001); [HY000] [Microsoft][ODBC SQL Server Driver]无效的连接字符串属性 (0)')

許仙的主页 許仙 | 菜鸟二级 | 园豆:202
提问于:2023-04-17 14:45
< >
分享
所有回答(1)
0

这个错误提示说明了在连接 SQL Server 时出现了 SSPI 上下文无法生成的问题,SSPI 是 Windows 安全支持提供程序接口,是一种安全协议,用于支持 Windows 网络验证。

这种问题通常是由于 pyodbc 模块没有在正确的安全上下文下运行所导致的。可以尝试以下几种方法来解决这个问题:

使用 Trusted_Connection=yes 参数
尝试在连接字符串中添加 Trusted_Connection=yes 参数,以使用当前 Windows 用户的安全上下文连接 SQL Server。例如:

arduino

connection = pyodbc.connect('DRIVER={SQL Server}; SERVER=...; DATABASE=BSY; Trusted_Connection=yes;')
指定用户名和密码
在连接字符串中指定用户名和密码来连接 SQL Server。例如:

arduino

connection = pyodbc.connect('DRIVER={SQL Server}; SERVER=...; DATABASE=BSY; UID=username; PWD=password;')
请确保替换连接字符串中的 username 和 password 为正确的 SQL Server 登录名和密码。

修改 Windows 注册表
如果以上方法都无法解决问题,可以尝试修改 Windows 注册表来启用 NTLMv2 会话安全。在 Windows 注册表中找到以下键:

mathematica

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa
然后添加以下两个 DWORD 值:

makefile

Name: DisableLoopbackCheck
Value: 1

Name: LmCompatibilityLevel
Value: 5
然后重新启动计算机并尝试连接 SQL Server。

希望这些方法可以帮助你解决问题

Technologyforgood | 园豆:5468 (大侠五级) | 2023-04-17 20:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册