使用其他域的用户凭据连接到SQL Server

时间:2014-02-02 08:49:20

标签: python sql-server pyodbc

如何使用另一个域中的用户登录名/密码连接到SQL Server数据库?

如果我使用我的帐户连接到数据库,它可以正常工作:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server_name;DATABASE=testdb;UID=MY_Domain\\username;PWD=pass; Trusted connection=YES')

但我需要使用其他用户的凭据,如

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server_name;DATABASE=testdb;UID=Another_Domain\\username;PWD=pass; Trusted connection=YES')

当我尝试后者时,我收到“MY_Domain \ username登录失败”的错误,而不是 对于用户“Another_Domain \ username”。

在这两种情况下,通过运行SQL Server Management Studio,我可以使用Windows身份验证连接到数据库。

1 个答案:

答案 0 :(得分:6)

您无法传递UIDPassword并设置Trusted_connection=True(您的第二个连接字符串)作为(模拟)Windows用户进行连接。您可以作为SQL Server用户(用户名和密码)或作为Windows身份验证用户(可信连接)进行连接。

您的代码应模拟Windows用户(如SSMS所做的那样),然后仅设置Trusted_connection=True

此MSDN页面WindowsIdentity.Impersonate有一个示例。

由于SSMS的工作原理,它表明域之间存在必要的信任。