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.
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).
Essayez cette chaîne cxn:
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;PORT=1433;DATABASE=testdb;UID=me;PWD=pass')
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
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')
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'
)