无法使用pyodbc

时间:2018-07-17 08:04:16

标签: python sql sql-server database pyodbc

我无法使用python中的pyodbc模块连接到SQL-server,我的连接字符串如下。

pyodbc.connect(driver=driv,host=server,database=db,trusted_connection="yes",user=user,password=pasw)

我遇到这样的错误

  

错误:(“'28000','[28000] [Microsoft] [SQL Server Native Client 11.0] [SQL Server]登录失败。该登录名来自不受信任的域,不能与Windows身份验证一起使用。(18452)( SQLDriverConnect); [28000] [Microsoft] [SQL Server Native Client 11.0] [SQL Server]登录失败。该登录来自不受信任的域,不能与Windows身份验证一起使用。(18452)')

我拥有的sql server的版本是

  

Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)2012年10月19日   13:38:57版权所有(c)Microsoft Corporation标准版   Windows NT 6.2(内部版本9200 :)上运行(64位)

通过运行 SELECT @@ VERSION 查询获得的

。 我曾使用SQL Server Native Client 11.0作为驱动程序。我注意到的一件事是,在SQL Server Management Studio中,我使用SQL Server身份验证而不是Windows身份验证。但是在这里,错误消息似乎正在尝试Windows身份验证。有什么方法可以使用SQL Server身份验证代替Windows身份验证?我想那会解决这个问题。

2 个答案:

答案 0 :(得分:0)

您正尝试从另一个域控制器连接到它,那么默认情况下 IntegratedSecurity = True 时,您会收到此错误

集成安全性仅意味着-使用Windows凭据对SQL Server进行登录验证。因此,如果您登录到其他域控制器,则它将失败。如果您在两个不同的域控制器上,则别无选择,只能使用 IntegratedSecurity = false

因此您可以尝试以下操作:

conn = pyodbc.connect(
                      r'DRIVER={SQL Server Native Client 11.0};
                      SERVER=localhost;
                      Integrated_Security=false;
                      Trusted_Connection=yes;
                      UID=user;
                      PWD=password;
                      DATABASE= db')

答案 1 :(得分:0)

在Microsoft的SQL Server ODBC驱动程序的最新版本中,Trusted_Connection=yes优先,因此即使提供了UID=PWD=,该连接也会尝试使用Windows身份验证。如果要使用SQL Server身份验证,则只需使用Trusted_Connection=no并提供UID=PWD=即可进行SQL Server登录。