使用 SQL Server 身份验证 Python pyodbc 连接到 Sql Server

4

我的Windows用户详情与我登录的Sql Server用户不同。因此,我尝试使用用户名(Admin_JJack)和密码通过pyodbc连接到数据库。但是,对于Windows用户(Jack),连接显示失败,我不知道哪里出了问题。

我的连接字符串:

connection = pyodbc.connect(
    "Driver={"SQL Driver"};"
    "Server= "ServerName";"
    "Database="DatabaseName";"
    "UID="UserName";"
    "PWD="Password";"
    "Trusted_Connection=yes"
)

pyodbc.InterfaceError: ('28000', "[28000] [Microsoft][SQL Server Native Client 11.0][SQL Server]用户 'Jack' 的登录失败。 (18456) (SQLDriverConnect);

如何使用 SQL Server 认证连接数据库?


UIDPWD是用于SQL Server登录(SQL Server身份验证)的凭据,还是用于与运行Python代码的Windows帐户不同的Windows登录? - Gord Thompson
您能否使用相同的凭据在其他数据库客户端登录? - Paulo Scardine
@PauloScardine 是的,我可以使用该用户名(Admin_JJack)和密码登录SSMS。 - Jack Lim
@GordThompson 我正在使用远程桌面连接来运行脚本,并且我建立的连接使用用户名(Admin_JJack)和密码来登录 SQL Server。 - Jack Lim
3个回答

13
当您使用"Trusted_Connection=yes"时,UID和PWD键都会被忽略,Windows账户用于身份验证。
如果您想要使用UID和PWD值进行身份验证,而不是Windows NTLM账户,则必须使用"Trusted_Connection=No"或从连接字符串中删除此选项。
{{Trusted_Connection}}指定用户是通过使用Kerberos [RFC4120]或其他特定于平台的认证(如fIntSecurity字段中指定的)连接到用户帐户。有三种有效值:“Yes”、“1”或空字符串,它们是等效的;或“No”。如果未指定“No”值,则使用“Yes”值。 如果值为“No”,则必须使用UID和PWD键来与数据源建立连接。如果连接字符串中未包含DSN键和UID键,或者UID键的值为空字符串,则Trusted_Connection键的值必须为“Yes”。如果在连接字符串中未指定Trusted_Connection键,则必须从DSN键中的设置内容获取该值。如果在DSN中未指定Trusted_Connection键,或者给定的DSN不存在,则默认值为“No”。 如果Trusted_Connection键的值为“Yes”,则忽略UID和PWD键。否则,必须指定UID键。在Microsoft实现中,此用户帐户是Windows用户帐户,并且在Trusted_Connection键的值为“Yes”时使用NTLM身份验证[MSDN-NTLM]。

来源:https://msdn.microsoft.com/


4
slightly different syntax:

conn = pyodbc.connect('Driver={SQL Server};'
                        'Server=dbServer1;'
                        'Database=db1;'
                        'UID=user1;'
                        'PWD=uSer1Pass!;'
                        'Trusted_Connection=no;')

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接