web-dev-qa-db-fra.com

Erreur 28000: échec de la connexion pour l'utilisateur DOMAIN \\ utilisateur avec pyodbc

J'essaie d'utiliser Python pour me connecter à une base de données SQL en utilisant l'authentification Windows. J'ai jeté un coup d'œil à certains des messages ici (par exemple, ici ), mais les méthodes suggérées ne semblaient pas fonctionner.

Par exemple, j'ai utilisé le code suivant:

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

Mais j'ai eu l'erreur suivante:

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

(Notez que j'ai remplacé le nom de domaine et le nom d'utilisateur réels par DOMAIN et username, respectivement, dans le message d'erreur ci-dessus.)

J'ai aussi essayé d'utiliser mes UID et PWD, ce qui a entraîné la même erreur. 

Enfin, j'ai essayé de changer le compte de service en suivant la suggestion du lien ci-dessus, mais sur mon ordinateur, il n'y avait pas d'onglet Log On lorsque je suis passé à la Properties de services.msc

Je me demande ce que j'ai fait de mal et comment je peux résoudre le problème.

10
Alex

Trusted_connection=yes indique à SQL Server d'utiliser "Authentification Windows" et votre script tentera de se connecter à SQL Server à l'aide des informations d'identification Windows de l'utilisateur qui exécute le script. 

Si vous souhaitez utiliser "Authentification SQL Server" avec une connexion SQL Server spécifique spécifiée par UID et PWD, utilisez Trusted_connection=no (ou omettez simplement le paramètre Trusted_connection de votre chaîne de connexion).

11
Gord Thompson

Essayez cette chaîne cxn: 

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

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

0
Merlin

J'ai eu un problème similaire lors de la connexion à la base de données par défaut (MSSQLSERVER). Si vous vous connectez à la base de données par défaut, veuillez supprimer le 

database = 'DATABASENAME',

ligne à partir de la section des paramètres de connexion et réessayez.

Cheers, Deepak

0
Deepak Venugopal

La première option fonctionne si vos informations d'identification ont été stockées à l'aide de la commande Invite. L'autre option est de donner les informations d'identification (UId, Psw) dans la connexion.

Ce qui suit a fonctionné pour moi:

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=yourServer;DATABASE=yourDatabase;UID=yourUsername;PWD=yourPassword')
0
JAFER

J'ai tout essayé et c'est finalement ce qui a fonctionné pour moi:

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