2016-06-08 13 views
8

Sto provando a utilizzare Python per connettersi a un database SQL utilizzando l'autenticazione di Windows. Ho esaminato alcuni dei post qui (ad es., here), ma i metodi suggeriti non sembravano funzionare.Errore 28000: accesso non riuscito per utente DOMAIN \ utente con pyodbc

Per esempio, ho usato il seguente codice:

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

ma ho ottenuto il seguente errore:

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

(Si noti che ho sostituito il nome del dominio e il nome utente con DOMAIN e username rispettivamente, nel messaggio di errore sopra.)

Ho anche provato a usare il mio UID e PWD, che ha portato allo stesso errore.

Infine, ho provato a cambiare l'account di servizio, seguendo il suggerimento dal link qui sopra, ma sul mio computer, non vi era alcuna scheda Log On quando sono andato al Properties di services.msc.

Mi chiedo cosa ho fatto di sbagliato e come posso risolvere il problema.

risposta

0

Prova questa stringa CXN:

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

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

+0

Suppongo che dovrei sostituire 'localhost' con il nome effettivo del server? In ogni caso, ho degli errori ... – Alex

+0

Devi essere chiaro, avere degli errori. Dammi niente con cui lavorare. quale errore Quanto lavoro hai svolto con SQL Server in generale. Sono connesso al db con lo studio di gestione e verificato che tutto funzioni e che il database sia attivo. E hai il permesso di cxn nel database con il tuo nome utente. – Merlin

+0

Non dare per scontato ... leggi i documenti sulle stringhe di connessione. Questo non è un problema pyodbc. È più che probabile che la sua autenticazione di Windows, mettendosi in mezzo. – Merlin

6

Trusted_connection=yes racconta la SQL Server per utilizzare "l'autenticazione di Windows" e lo script tenterà di accedere al SQL Server utilizzando le credenziali di Windows del utente che esegue lo script.

Se si vuole usare "l'autenticazione di SQL Server" con uno specifico accesso di SQL Server specificato da UID e PWD quindi utilizzare Trusted_connection=no (o semplicemente omettere il parametro Trusted_connection dalla stringa di connessione).

+0

C'è un modo per connettersi come un altro utente Windows diverso da quello che ha effettuato l'accesso? – Sandeep

0

Ho provato di tutto e questo è quello che alla fine ha funzionato per me:

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