窗口用户详细信息与我登录的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身份验证连接到数据库?
答案 0 :(得分:3)
当您使用“ Trusted_Connection =是”时,UID和PWD密钥都将被忽略,并且Windows帐户用于身份验证。
如果要使用UID和PWD值而不是Windows NTLM帐户进行身份验证,则必须使用“ Trusted_Connection = No”或从连接字符串中删除此选项。
受信任的连接
指定用户是否通过使用以下方式通过用户帐户进行连接 Kerberos [RFC4120]或其他特定于平台的身份验证 由fIntSecurity字段指定(有关详细信息,请参见[MS-TDS] 第2.2.6.4节)。
有效值为“是”,“ 1”或空字符串,它们是 等价或“否”。如果未指定值“否”,则该值 使用“是”。
如果该值为“ No”,则必须使用UID和PWD密钥 与数据源建立连接。
如果连接中未包含DSN密钥和UID密钥 字符串,或者如果UID密钥的值为空字符串,则为 Trusted_Connection密钥必须为“是”。如果Trusted_Connection 连接字符串中未指定密钥,该值必须为 从DSN密钥中的设置内容获得。如果 DSN中未指定Trusted_Connection密钥,或者给定的DSN未指定 不存在,默认值为“否”。
如果Trusted_Connection密钥的值为“是”,则UID和 PWD密钥将被忽略。否则,必须指定UID密钥。
在Microsoft实现中,此用户帐户是Windows用户 帐户和NTLM身份验证[MSDN-NTLM]的值是 Trusted_Connection密钥为“是”。
答案 1 :(得分:1)
slightly different syntax:
conn = pyodbc.connect('Driver={SQL Server};'
'Server=dbServer1;'
'Database=db1;'
'UID=user1;'
'PWD=uSer1Pass!;'
'Trusted_Connection=no;')