错误28000:pyodb用户域的用户登录失败

2024-05-18 14:22:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用Python通过窗口身份验证连接到SQL数据库。我看了这里的一些帖子(例如here),但是建议的方法似乎不起作用。

例如,我使用了以下代码:

cnxn = pyodbc.connect(driver='{SQL Server Native Client 11.0}',
                      server='SERVERNAME', 
                      database='DATABASENAME',               
                      trusted_connection='yes')

但我犯了以下错误:

Error: ('28000', "[28000] [Microsoft][SQL Server Native Client 11.0][SQL Server]
Login failed for user 'DOMAIN\\username'. (18456) (SQLDriverConnect); [28000] [Microsoft]
[SQL Server Native Client 11.0][SQL Server]Login failed for user 'DOMAIN\\username'. 
(18456)") 

注意,在上面的错误消息中,我将实际的域名和用户名分别替换为DOMAINusername

我还尝试使用我的UIDPWD,这导致了相同的错误。

最后,我试图按照上面链接的建议更改服务帐户,但是在我的计算机上,当我转到services.mscProperties时,没有Log On选项卡。

我想知道我做错了什么,怎样才能解决这个问题。


Tags: client身份验证数据库forsqlserverdomain错误
3条回答

我什么都试过了,这就是我最终的成功:

import pyodbc
driver= '{SQL Server Native Client 11.0}'

cnxn = pyodbc.connect(
    Trusted_Connection='Yes',
    Driver='{ODBC Driver 11 for SQL Server}',
    Server='MyServer,1433',
    Database='MyDB'
)

从Windows计算机连接:

使用Microsoft针对SQL Server的ODBC驱动程序,Trusted_connection=yes告诉驱动程序使用“Windows身份验证”,脚本将尝试使用运行脚本的用户的Windows凭据登录到SQL Server。UIDPWD不能用于在连接字符串中提供其他Windows凭据,因此如果需要以其他Windows用户身份连接,则需要使用RUNAS以该其他用户身份运行Python脚本。。

如果要对由UIDPWD指定的SQL Server登录名使用“SQL Server身份验证”,请使用Trusted_connection=no

从非Windows计算机连接:

如果需要从非Windows计算机连接,并且SQL Server配置为仅使用“Windows身份验证”,则Microsoft的SQL Server ODBC驱动程序将要求您使用Kerberos。或者,可以使用FreeTDS ODBC,在连接字符串中指定UIDPWDDOMAIN,前提是SQL Server实例配置为支持旧的NTLM身份验证协议。

尝试此cxn字符串:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;PORT=1433;DATABASE=testdb;UID=me;PWD=pass')

http://mkleehammer.github.io/pyodbc/

相关问题 更多 >

    热门问题