129 votes

Impossible de se connecter à SQL Server + Authentification SQL Server + Erreur : 18456

J'ai créé un compte de connexion sur mon hôte local. \sql2008 Serveur (par exemple, Utilisateur123)

Mappé à la base de données (par défaut)

Le mode d'authentification du serveur SQL est réglé sur les deux (Windows et SQL).

Mais la connexion au serveur SQL échoue avec le message suivant (pour User123)

Note : J'ai vérifié à plusieurs reprises que le nom d'utilisateur et le mot de passe sont correctement saisis.

Détails de l'erreur :

La connexion a échoué pour l'utilisateur 'User123'. (Net.SqlClient Data Provider)

Nom du serveur : localhost \sql2008 Erreur Numéro : 18456 Severity : 14 State : 1 Numéro de ligne : 65536

Toute aide à ce sujet est la bienvenue.

1 votes

Testez l'accès à l'authentification sql et Windows via la console de gestion SqlServer pour l'utilisateur et voyez si vous pouvez accéder avec le compte ci-dessus. Quel fournisseur de données et quelle chaîne de connexion utilisez-vous ?

1 votes

J'essaie de me connecter dans SSMS et l'erreur ci-dessus se produit.

1 votes

Vous pouvez vous connecter en tant que compte administrateur ?

347voto

PrateekSaluja Points 7387

Vous devez activer l'authentification du serveur SQL :

  1. Dans l'Explorateur d'objets, cliquez à droite sur le serveur et cliquez sur "Propriétés".

DBMS Properties dialog

  1. Dans la fenêtre "Propriétés du serveur", cliquez sur "Sécurité" dans la liste des pages sur la gauche. Sous "Server Authentication", choisissez l'option radio "SQL Server and Windows Authentication mode".

SQL Server Authentication dialog

  1. Redémarrez le service SQLEXPRESS.

34 votes

Oh MERCI un million de fois. Principalement pour le mot "redémarrer" ci-dessus !

0 votes

Merci d'avoir expliqué cela, je suis plutôt une personne de MySQL et je ne savais pas que je devais faire la modification de l'étape 2 ci-dessus ou même qu'elle existait.

0 votes

Bienvenue @ gadildafissh

53voto

Joe Pitz Points 883

Par défaut, le message d'erreur "login failed" n'est rien d'autre qu'un utilisateur client dont la connexion a été refusée par le serveur en raison d'une mauvaise correspondance des informations d'identification. La première chose à faire est de vérifier si cet utilisateur dispose des privilèges appropriés sur cette instance de SQL Server et sur la base de données correspondante, c'est bien. Évidemment, si les privilèges nécessaires n'ont pas été définis, vous devez résoudre ce problème en accordant les privilèges appropriés pour la connexion de cet utilisateur.

Bien que cet utilisateur dispose des autorisations nécessaires sur la base de données et le serveur, si le serveur rencontre des problèmes d'authentification pour cette connexion, il ne pourra pas accorder l'authentification au serveur SQL, le client obtiendra le message d'erreur suivant :

Msg 18456, Level 14, State 1, Server <ServerName>, Line 1
Login failed for user '<Name>'

En regardant le message d'erreur, vous avez l'impression qu'il n'est pas assez explicite pour comprendre le niveau et l'état. Par défaut, l'erreur du système d'exploitation indique l'état 1, quelle que soit la nature des problèmes d'authentification de la connexion. Pour aller plus loin, vous devez donc consulter le journal des erreurs de l'instance SQL Server concernée pour obtenir plus d'informations sur la gravité et l'état de cette erreur. Vous pouvez rechercher une entrée correspondante dans le journal comme :

2007-05-17 00:12:00.34 Logon     Error: 18456, Severity: 14, State: 8.
or

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

Comme défini ci-dessus, les colonnes Severity & State de l'erreur sont essentielles pour trouver la réflexion précise de la source du problème. Dans l'erreur ci-dessus, le numéro 8 pour l'état indique un échec d'authentification dû à une incompatibilité de mot de passe. Les livres en ligne s'y réfèrent : Par défaut, les messages définis par l'utilisateur d'une gravité inférieure à 19 ne sont pas envoyés au journal des applications Microsoft Windows lorsqu'ils se produisent. Les messages définis par l'utilisateur d'une gravité inférieure à 19 ne déclenchent donc pas d'alertes de l'agent SQL Server.

Sung Lee, directeur de programme au sein de l'équipe Protocoles du serveur SQL (Dev.team), a fourni des informations complémentaires sur la description des états d'erreur : les états d'erreur courants et leur description sont présentés dans le tableau suivant :

ERROR STATE       ERROR DESCRIPTION
------------------------------------------------------------------------------
2 and 5           Invalid userid
6                 Attempt to use a Windows login name with SQL Authentication
7                 Login disabled and password mismatch
8                 Password mismatch
9                 Invalid password
11 and 12         Valid login but server access failure
13                SQL Server service paused
18                Change password required

Well I'm not finished yet, what would you do in case of error:

2007-05-17 00:12:00.34 Logon     Login failed for user '<user name>'.

Vous pouvez voir qu'il n'y a pas de niveau de gravité ou d'état défini dans le journal des erreurs de cette instance de SQL Server. La prochaine option de dépannage consiste donc à consulter le journal de sécurité de l'observateur d'événements [modifier car la capture d'écran est manquante, mais vous obtenez l'information suivante

idée, regardez dans le journal des événements pour trouver des événements intéressants].

1 votes

Merci, je vais regarder et voir comment cela se passe

1 votes

lien mort, veuillez envisager de le réviser

11 votes

La réponse supérieure à celle-ci devrait être choisie, pas celle-ci.

48voto

Nathan Koop Points 9115

J'ai eu le même problème, mais le mien était dû au fait que je n'avais pas réglé l'authentification du serveur sur "SQL Server and Windows Authentication mode" (ce que vous avez fait). Je voulais juste le mentionner ici au cas où quelqu'un l'aurait manqué dans votre question.

Vous pouvez y accéder en

  • Clic droit sur l'instance (IE SQLServer2008)
  • Sélectionnez "Propriétés".
  • Sélectionnez l'option "Sécurité".
  • Changez "Authentification du serveur" en "Mode d'authentification SQL Server et Windows".
  • Redémarrez le service SQLServer
    • Clic droit sur l'instance
    • Cliquez sur "Redémarrer".

7 votes

J'ai passé deux heures parce que je ne comprenais pas que je devais redémarrer tout le serveur. C'est tout simplement insensé qu'un redémarrage soit nécessaire pour une telle chose. Microsoft n'a pas de limites aux crapwares qu'ils crachent.

1 votes

C'est également une réponse essentielle à la raison pour laquelle il est impossible de se connecter à une instance Amazon EC2 sur laquelle est installé un serveur SQL.

20voto

Barry Points 111

Vous pouvez y accéder en

Right click on instance (IE SQLServer2008)
Select "Properties"
Select "Security" option
Change "Server authentication" to "SQL Server and Windows Authentication mode"
Restart the SQLServer service
    Right click on instance
    Click "Restart"

Juste pour tous ceux qui lisent ceci : Cela a également fonctionné pour moi sur le serveur SQL 2012. Merci

1 votes

Merci, c'était parfait, droit au but la réponse acceptée est remplie de bonnes informations mais c'est ce qui a fonctionné pour moi.

4 votes

Cela ne peut pas fonctionner pour le PO puisqu'il a mentionné que "Authentication Mode on SQL Server is set to both (Windows and SQL)".

0voto

dinesh Haraveer Points 644

J'ai eu le même problème mais en regardant cette vidéo Erreur Microsoft SQL Server 18456 Login Failed for User (échec de connexion pour l'utilisateur) . J'espère que cette vidéo aidera les débutants comme moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X