4

窗口用户详细信息与我登录的 Sql Server 用户不同。所以我尝试使用 pyodbc 使用用户名(Admin_JJack)和密码连接到数据库。但是 Window User(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 身份验证连接到数据库?

4

3 回答 3

11

当您使用“Trusted_Connection=yes”时,UID 和 PWD 密钥都将被忽略,Windows 帐户用于身份验证。

如果要使用 UID 和 PWD 值而不是 Windows NTLM 帐户进行身份验证,则必须使用“Trusted_Connection=No”或从连接字符串中删除此选项。

Trusted_Connection

指定用户是否使用 Kerberos [RFC4120] 或 fIntSecurity 字段指定的其他特定于平台的身份验证通过用户帐户进行连接(有关详细信息,请参阅 [MS-TDS] 部分 2.2.6.4)。

有效值为“Yes”、“1”或空字符串,它们是等效的,或“No”。如果未指定值“No”,则使用值“Yes”。

如果值为“No”,则必须使用 UID 和 PWD 密钥来建立与数据源的连接。

如果 DSN 键和 UID 键不包含在连接字符串中,或​​者如果 UID 键的值为空字符串,则 Trusted_Connection 键的值必须为“Yes”。如果连接字符串中未指定 Trusted_Connection 键,则必须从 DSN 键中的设置内容中获取该值。如果在 DSN 中未指定 Trusted_Connection 键或给定的 DSN 不存在,则默认值为“否”。

如果 Trusted_Connection 键的值为“Yes”,则 UID 和 PWD 键都将被忽略。否则,必须指定 UID 键。

在 Microsoft 实现中,此用户帐户是 Windows 用户帐户,并且当 Trusted_Connection 键的值为“是”时使用 NTLM 身份验证 [MSDN-NTLM]。

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

于 2018-11-13T04:00:15.967 回答
1
slightly different syntax:

conn = pyodbc.connect('Driver={SQL Server};'
                        'Server=dbServer1;'
                        'Database=db1;'
                        'UID=user1;'
                        'PWD=uSer1Pass!;'
                        'Trusted_Connection=no;')
于 2020-12-29T07:38:30.703 回答
0

对于 Windows 身份验证,您需要输入Trusted_Connection=yes; 而不是 uid 和 pwd,如果这不起作用,请尝试 DSN 方法(https://docs.microsoft.com/en-us/sql/integration-services/import-export-data/connect-to-an-odbc -data-source-sql-server-import-and-export-wizard?view=sql-server-ver15我建议做选项 1,但这是你的电话

于 2021-12-01T03:33:45.873 回答