2016-06-08 267 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' 
)