Meldung, die SQL Server Log File Viewer anzeigt:
Login failed for user [User]
Error: 18456, Severity: 14, State 38
Was es eigentlich bedeutet:
Failed to open the explicitly specified database
Meine Frage:
Gibt es eine Liste aller Variationen der 18456-Fehler (Anmeldung fehlgeschlagen) für jede Kombination aus Schweregrad und Status mit dem hilfreichen Beschreibungstext?
Ich hatte ein Google, kann aber nur bestimmte Kombinationen finden.
sql-server
errors
logins
Pete Oakey
quelle
quelle
Ich hatte den gleichen Fehler mit dem Statuscode 38, der durch einen Tippfehler des Datenbanknamens in der Verbindungszeichenfolge verursacht wurde.
quelle
Folgendes habe ich gefunden, als ich diesen Fehler behoben habe: Ich habe einige SQL-Verbindungen mit der Windows-Anmeldung und nicht mit Benutzername und Kennwort erstellt. Ich bin mir nicht sicher, was oder wie es passiert ist, aber es hat funktioniert. Ich habe sie gelöscht und dann meine Entitätsmodelle neu erstellt. Ich habe eine andere Verbindungszeichenfolge verwendet, von der ich wusste, dass sie gut ist, und alles ist Freude. Der Schlüssel ist Persist Security Info = True, was in einem Netzwerk oder auf einer externen Website nicht funktioniert
quelle
Ich hatte auch 18456 mit Zustand 38. Es stellte sich heraus, dass die Verbindungszeichenfolge "integrierte Sicherheit = wahr" hatte, was nicht das war, was ich wollte. Die Verbindungszeichenfolge enthielt die Benutzer-ID und das Kennwort, die verwendet werden sollten. Als ich die Einstellung auf false änderte, war alles in Ordnung.
quelle
Beim Versuch, mich bei einem SQL Server mit mehreren Instanzen anzumelden, ist dieser Fehler aufgetreten. Die Verbindungszeichenfolge hat keine Instanz benannt. Nachdem ich die Instanz benannt habe (SERVERNAME \ INSTANCENAME), konnte ich eine Verbindung zum Server herstellen.
quelle
@Pete Oakly ist auf dem richtigen Weg mit der Liste der Ländercodes. Insbesondere ist dies der Code, an dem wir alle interessiert sind:
Mein Problem begann in einem C # -Fehlerprotokoll:
Meine Augen waren auf den Teil "Anmeldung fehlgeschlagen" gerichtet . Mein Benutzer war sa für diesen DB-Server. Wie konnte die Anmeldung möglicherweise fehlschlagen?
Ich bin auf diesen Beitrag von drei Programmierern gestoßen, die die Antwort hatten: https://justaprogrammer.net/2012/12/09/a-misleading-sql-error-message-error-18456-severity-14-state-38 /
Es ist nicht die Anmeldung, die per se fehlschlägt, sondern die Datenbank, auf die ich zugreifen möchte. Es existiert nicht!
Bingo! Ich habe den Datenbanknamen aus anderen Gründen geändert und die Konfigurationsdatei nicht aktualisiert. Der Name der Datenbank wurde korrigiert und die Dinge funktionieren wieder wie ein Zauber.
quelle
In unserem Fall im SQL Server Configuration Manager | SQL Server-Netzwerkkonfiguration | TCP / IP | IP | Der TCP-Port wurde NICHT festgelegt.
Ohne könnten wir eine ODBC-Verbindung herstellen und sogar eine Remote-SQL Management Studio-Verbindung verwenden und uns mit dem Benutzer anmelden. Bei jedem Zugriff auf die URL unserer Tomcat-Anwendung wurde jedoch eine JDBC-Verbindung hergestellt, und im SQL Server-Protokoll wurde der Fehler festgestellt: Anmeldung für Benutzer 'xxxx' fehlgeschlagen: Grund Fehler beim Öffnen der explizit definierten Datenbank, Fehler 18456, Schweregrad 14 , State 38
Hier eine Zusammenfassung der jdbc-Verbindungszeichenfolge
Dies gilt auch für die SQL Server-Netzwerkkonfiguration Protokolle für <Instanzname> | Named Pipes müssen AKTIVIERT sein und der Pipe Name
\\.\pipe\MSSQL$<instance name>\sql\query
muss korrekt eingestellt sein.quelle
Nun, dies ist ein Fehler im Zusammenhang mit der Datenbankberechtigung. Ich füge meine Lösung in diese Frage ein, weil es sehr wichtig ist, die Rolle des DBA zu verstehen. Also, da sind meine Vorschläge:
Melden Sie sich jetzt mit diesem Benutzernamen an und Sie können dem Benutzer Zugriff gewähren. Um dies zu tun:
Gehen Sie zu Sicherheit , klicken Sie mit der rechten Maustaste auf Anmeldungen und wählen Sie Neue Anmeldung
Im Anmeldefenster können Sie den Benutzernamen eingeben oder suchen. Wählen Sie den Benutzer aus der Liste aus und klicken Sie auf OK und erneut auf OK .
Auf dem gleichen Login - Fenster, klicken Sie auf die Serverrollen und den Zugriff auf den ausgewählten Benutzer gewähren wie: Sysadmin, server, decreator etc; Klicken Sie auf OK .
Wenn Sie Zugriff auf eine einzelne Datenbank gewähren möchten, rufen Sie die Benutzerzuordnung auf und stellen Sie den Zugriff gemäß Ihren Anforderungen bereit.
Überprüfen Sie den Status der Datenbank: Berechtigung: Anmeldung erteilen: Aktiviert
Klicken Sie auf OK
quelle