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

时间:2018-11-13 02:58:58

标签: python sql-server pyodbc sql-server-authentication

窗口用户详细信息与我登录的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身份验证连接到数据库?

2 个答案:

答案 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密钥为“是”。

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

答案 1 :(得分:1)

slightly different syntax:

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