Error: 18456, Severity: 14, State: 11

By

Posted on Jul 20, 2010 von in SQL Server
Auch wenn ich die Ursache dieses Problems noch nicht klären konnte, will ich hier eine kurze Beschreibung geben und eine Lösungsmöglichkeit aufzeigen.
Vor einer Serverumstellung hatte ich schon mal auf dem neuen System einige Testdatenbanken restored und schon ein paar Logins angelegt. Diese Logins hatten die Datenbanken als Default-Datenbank. Während der Umstellung wurden die produktiven Datenbanken (Full + Differential) auf das neue System restored. Die vorher angelegten Logins blieben erhalten. Alle weiteren Logins wurden angelegt.
Nur bei den vorher angelegten Logins bekamen die Anwender Fehlermeldungen:
Error: 18456, Severity: 14, State: 11.
Login failed for user 'Domäne\Konto'. 
Reason: Token-based server access validation failed with an infrastructure error. 
Check for previous errors. 
Dieser Abschnitt ist leider nicht mehr mit gültigen Links versehen. Alternativ verwendet man (Stand 2021) am besten MSSQLSERVER_18456!
Bei der Suche nach der Ursache habe ich zuerst die Liste der Status-Codes gefunden, welche sich ohne den Support bearbeiten lassen.
Hier findet sich noch eine weitere Auflistung von Status-Codes und Hintergründe zu anderen Fehlerursachen
Status 11 sagt also "Valid login but server access failure". Bei der weiteren Suche bin ich dann auf ein SQL gestossen, was mir die Berechtigungen der Logins anzeigt

SELECT t2.name,t1.*
FROM  sys.server_permissions t1 , sys.server_principals t2
WHERE t1.grantee_principal_id = t2.principal_id
AND t1.TYPE<>'R'
ORDER BY name;

Bei der Liste fiel auf, dass für die problembehafteten Logins kein Eintrag vorhanden war. Nun galt es nur noch die fehlende Berechtigung zu setzen:

USE MASTER
GO
GRANT connect sql TO [Domäne\Konto];

und schon konnten die User sich anmelden.

Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags: berechtigungen, error

7 Kommentare

Benutzerwertungen
5 Stern:
 
(3)
4 Stern:
 
(0)
3 Stern:
 
(0)
2 Stern:
 
(0)
1 Stern:
 
(0)
3 Bewertungen
Durschn. Benutzerwertung:
(5.0)
hattest Du das auch mal genommen: http://www.insidesql.org/berechtigung-und-rollen-von-windows-gruppen-und-ihren-mitgliedern :-)
22.07.10 @ 09:34
Das SQL hätte mir auch keinen Treffer für das fehlerhafte Login geliefert. Abhilfe schafft etwas in dieser Art:
SELECT *
FROM sys.server_principals a
WHERE NOT EXISTS(
SELECT t2.name,t1.*
FROM  sys.server_permissions t1 , sys.server_principals t2
WHERE t1.grantee_principal_id = t2.principal_id
AND t1.TYPE<>'R'
AND t2.principal_id = a.principal_id)
AND
a.TYPE = 'U';

22.07.10 @ 12:34
ist das 2008er?
22.07.10 @ 14:04
Ja! Genau genommen 2008 R2!
22.07.10 @ 14:12
da funktioniert auch das o.g. SQL nicht :-( grrr. aber warum brauchst Du noch die Rolle?
22.07.10 @ 15:31
Das Problem war ja, dass es zwar ein Login gab, dies aber kein Recht zum Login mehr hatte. So als ob jemand ein REVOKE connect sql FROM [Domäne\Konto];
gemacht hätte.
Welche Rolle?
22.07.10 @ 15:39
... ich bin von der rolle! klima ist ausgefallen!
22.07.10 @ 15:59


Formular wird geladen...