Impossible de se connecter à SQL Server + authentification SQL Server + erreur: 18456

121

J'ai créé un compte de connexion sur mon serveur localhost \ sql2008 (par exemple, User123)

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

Le mode d'authentification sur SQL Server est défini sur les deux (Windows et SQL)

Mais la connexion à SQL Server échoue avec le message suivant (pour User123)

Remarque: avoir vérifié à plusieurs reprises que le nom d'utilisateur / mot de passe est correctement saisi

Détails de l'erreur:

La connexion a échoué pour l'utilisateur 'User123' (fournisseur de données Net.SqlClient)

Nom du serveur: localhost \ sql2008 Numéro d'erreur: 18456 Gravité: 14 État: 1 Numéro de ligne: 65536

toute aide à ce sujet s'il vous plaît.

Sreedhar
la source
1
Testez à la fois l'accès d'authentification SQL et Windows via SqlServer Management Console pour l'utilisateur et voyez si vous pouvez y accéder avec le compte ci-dessus. Quel fournisseur de données et quelle chaîne de connexion utilisez-vous?
Joe Pitz
1
J'essaie de me connecter dans SSMS et cela jette l'erreur ci-dessus.
Sreedhar
1
Vous pouvez vous connecter en tant que compte administrateur?
Joe Pitz
Connectez-vous en tant qu'administrateur et vérifiez votre journal des événements. La raison de l'erreur doit y figurer. Regardez sous le dossier de gestion
Joe Pitz
L'alternative qui a fonctionné pour moi était stackoverflow.com/questions/28090747/…
Mark Schultheiss

Réponses:

49

Par défaut, le message d'erreur d'échec de connexion n'est rien d'autre qu'une connexion d'utilisateur client a été refusée par le serveur en raison d'une non-concordance des informations de connexion. La première tâche que vous pouvez vérifier est de voir si cet utilisateur dispose des privilèges appropriés sur cette instance SQL Server et sur la base de données pertinente également, c'est bien. Évidemment, si les privilèges nécessaires ne sont pas définis, vous devez résoudre ce problème en accordant les privilèges appropriés pour cette connexion utilisateur.

Bien que si cet utilisateur dispose des autorisations appropriées sur la base de données et le serveur si le serveur rencontre des problèmes d'informations d'identification pour cette connexion, il l'empêchera de redonner l'authentification à SQL Server, le client recevra le message d'erreur suivant:

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

Ok maintenant quoi, en regardant le message d'erreur, vous sentez que c'est non descriptif pour comprendre le niveau et l'état. Par défaut, l'erreur du système d'exploitation affichera «État» comme 1 quelle que soit la nature des problèmes d'authentification de la connexion. Par conséquent, pour approfondir votre recherche, vous devez également consulter le journal des erreurs d'instance SQL Server pertinent pour 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 Gravité et État de l'erreur sont essentielles pour trouver le reflet précis de la source du problème. Sur l'erreur ci-dessus, le numéro 8 pour l'état indique un échec d'authentification en raison d'une incompatibilité de mot de passe. La documentation en ligne fait référence: par défaut, les messages définis par l'utilisateur dont la gravité est 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 dont la gravité est inférieure à 19 ne déclenchent donc pas d'alertes de l'Agent SQL Server.

Sung Lee, Program Manager in SQL Server Protocols (Dev.team) a donné plus d'informations sur la description de l'état d'erreur: Les états d'erreur courants et leurs descriptions sont fournis 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'aucune gravité ou niveau d'état n'est défini à partir du journal des erreurs de cette instance 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 le

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

Joe Pitz
la source
1
Merci va regarder et voir comment ça se passe
Sreedhar
1
lien mort s'il vous plaît envisager de réviser
Chris Hayes
10
La réponse supérieure en dessous de celle-ci devrait être choisie, pas celle-ci.
void.pointer
4
Lisez l'article ci-dessous.
Levi Fuller
6
@ void.pointer l'OP a déjà établi que «le mode d'authentification sur SQL Server est défini sur les deux (Windows et SQL)». Le message ci-dessous n'a donc aucun rapport avec cette question.
Manachi
336

Vous devez activer l'authentification SQL Server:

  1. Dans l'Explorateur d'objets, faites un clic droit sur le serveur et cliquez sur "Propriétés"

Boîte de dialogue Propriétés du SGBD

  1. Dans la fenêtre "Propriétés du serveur", cliquez sur "Sécurité" dans la liste des pages à gauche. Sous «Authentification du serveur», choisissez l'option radio «Mode d'authentification SQL Server et Windows».

Boîte de dialogue d'authentification SQL Server

  1. Redémarrez le service SQLEXPRESS.
PrateekSaluja
la source
29
Oh MERCI un million de fois. Principalement pour le mot «redémarrer» ci-dessus!
Magnus Smith
4
Je sais que c'est vieux, mais ça m'a totalement sauvé le cul. Merci Prateek. Appréciez-le. BESOIN de redémarrer!
Levi Fuller
3
Pourquoi cela devrait-il fonctionner si OP indique explicitement que «le mode d'authentification sur SQL Server est défini sur les deux (Windows et SQL)»?
Tim Schmelter
4
Cette réponse est redondante et inutile pour la question. L'OP a déjà établi que «le mode d'authentification sur SQL Server est défini sur les deux (Windows et SQL)».
Manachi
1
C'était incroyable .. !! Merci PrateekSaluja
Amin Sayed
44

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

Vous pouvez y accéder en

  • Faites un clic droit sur l'instance (IE SQLServer2008)
  • Sélectionnez "Propriétés"
  • Sélectionnez l'option "Sécurité"
  • Remplacez «Authentification serveur» par «Mode d’authentification SQL Server et Windows»
  • Redémarrez le service SQLServer
    • Faites un clic droit sur l'instance
    • Cliquez sur "Redémarrer"
Nathan Koop
la source
6
J'ai passé environ deux heures parce que je n'obtenais pas ce dont j'ai besoin pour REDÉMARRER tout le serveur. C'est juste insensé qu'un redémarrage soit nécessaire pour une telle chose. Microsoft n'a aucune limite au crapware qu'ils crachent.
Utilisateur enregistré le
1
C'est également une réponse vitale pour savoir pourquoi ne peut pas se connecter à l'instance Amazon EC2 que le serveur SQL a installée dessus.
Teoman shipahi
19

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 2012 SQL Server. Merci

Barry
la source
1
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.
Tony
4
Cela ne peut pas fonctionner pour OP car il a mentionné que "le mode d'authentification sur SQL Server est défini sur les deux (Windows et SQL)".
Tim Schmelter
1

La solution correcte au problème consiste à vous assurer que l'authentification du serveur SQL est activée pour votre serveur SQL.

Deepesh Bajracharya
la source
1

Après avoir activé le «Mode d'authentification SQL Server et Windows», accédez à ce qui suit.

  1. Gestion de l'ordinateur (dans le menu Démarrer)
  2. Services et applications
  3. Gestionnaire de configuration SQL Server
  4. Configuration réseau SQL Server
  5. Protocoles pour MSSQLSERVER
  6. Faites un clic droit sur TCP / IP et activez-le.

Enfin, redémarrez le serveur SQL.

Vasudev
la source