2016-06-08 19 views
8

Próbuję użyć Pythona do połączenia z bazą danych SQL przy użyciu uwierzytelniania okna. Przyjrzałem się niektórym postom tutaj (np. here), ale sugerowane metody nie działały.Błąd 28000: Logowanie nie powiodło się dla użytkownika DOMAIN \ użytkownik z pyodbc

Na przykład, kiedyś następujący kod:

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

Ale mam następujący błąd:

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)") 

(pamiętać, że zastąpione rzeczywistą nazwę domeny i nazwę użytkownika z DOMAIN i username, odpowiednio, w powyższym komunikacie o błędzie)

Próbowałem również używać mojego UID i PWD, co doprowadziło do tego samego błędu.

Na koniec próbowałem zmienić konto usługi, postępując zgodnie z sugestią z powyższego linku, ale na moim komputerze nie było karty Log On po przejściu do Properties z services.msc.

Zastanawiam się, co zrobiłem źle i jak mogę rozwiązać problem.

Odpowiedz

0

Spróbuj ciąg cxn:

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

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

+0

zakładam należy wymienić 'localhost' z rzeczywistą nazwę serwera? Tak czy siak, mam błędy ... – Alex

+0

Musisz być czysty, masz błędy. Nie daj mi nic do roboty. jaki błąd. Ile pracy wykonałeś z SQL Server w ogóle. Połączyłem się z bazą danych ze studiem zarządzającym i sprawdziłem, że wszystko działa, a baza danych jest gotowa. I masz uprawnienia do cxn do bazy danych z twoją nazwą użytkownika. – Merlin

+0

Nie zakładaj ... przejrzyj dokumenty dotyczące ciągów połączeń. To nie jest problem pyodbc. Jest bardziej niż prawdopodobne, że jego okna stają się przeszkodą. – Merlin

6

Trusted_connection=yes mówi SQL Server do używania "Uwierzytelnianie systemu Windows" i skrypt będzie próbował zalogować się do serwera SQL przy użyciu poświadczeń okien użytkownik uruchamiający skrypt.

Jeśli chcesz korzystać z „Uwierzytelnianie SQL Server” z określonym logowania SQL Server określonym przez UID i PWD następnie użyć Trusted_connection=no (lub po prostu pominąć parametr z ciągu połączenia Trusted_connection).

+0

Czy istnieje sposób połączenia się z innym użytkownikiem systemu Windows, który jest inny niż zalogowany użytkownik? – Sandeep

0

Próbowałem wszystkiego i to, co ostatecznie pracował dla mnie:

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' 
)