2016-06-08 269 views
8

我想通过使用Windows身份验证使用Python连接到SQL数据库。我查看了这里的一些帖子(例如,here),但建议的方法似乎不起作用。错误28000:用户DOMAIN \用户登录失败pyodbc

例如,我用下面的代码:

cnxn = pyodbc.connect(driver='{SQL Server Native Client 11.0}', 
         server='SERVERNAME', 
         database='DATABASENAME',    
         trusted_connection='yes') 

但我得到了以下错误:

Error: ('28000', "[28000] [Microsoft][SQL Server Native Client 11.0][SQL Server] 
Login failed for user 'DOMAIN\\username'. (18456) (SQLDriverConnect); [28000] [Microsoft] 
[SQL Server Native Client 11.0][SQL Server]Login failed for user 'DOMAIN\\username'. 
(18456)") 

请注意,我更换了实际的域名和用户名与DOMAINusername分别在上面的错误信息中

我也试过用我的UIDPWD,这导致了相同的错误。

最后,我试图通过上述链接的建议更改服务帐户,但在我的计算机上,当我去的services.msc时没有Log On选项卡。

我想知道我做错了什么,我该如何解决这个问题。

回答

0

试试这个CXN字符串:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;PORT=1433;DATABASE=testdb;UID=me;PWD=pass') 

http://mkleehammer.github.io/pyodbc/

+0

我想我应该更换'localhost'与实际的服务器名称?无论哪种方式,我得到的错误... – Alex

+0

你必须清楚,有错误。不要给我任何工作。什么错误。一般来说,你使用SQL Server做了多少工作。通过管理工作室连接到数据库并验证了所有工作都正常,数据库已启动。而且,您有权使用您的用户名对数据库执行cxn操作。 – Merlin

+0

不要假设...去阅读关于连接字符串的文档。这不是一个pyodbc问题。它更可能是它的Windows验证,阻碍。 – Merlin

6

Trusted_connection=yes告诉SQL Server使用 “Windows身份验证” 和你的脚本将尝试使用的Windows凭据登录到SQL Server用户运行脚本。

如果你想使用“SQL Server身份验证”与UIDPWD指定一个特定的SQL Server登录,然后使用Trusted_connection=no(或只是省略从您的连接字符串Trusted_connection参数)。

+0

有没有办法以另一个Windows用户身份登录? – Sandeep

0

我都试过了,这是什么最终为我工作:

import pyodbc 
driver= '{SQL Server Native Client 11.0}' 

cnxn = pyodbc.connect(
    Trusted_Connection='Yes', 
    Driver='{ODBC Driver 11 for SQL Server}', 
    Server='MyServer,1433', 
    Database='MyDB' 
)