Error: 18456, Severity: 14, State: 11

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. 

Bei der Suche nach der Ursache habe ich zuerst die Liste der Status-Codes gefunden, welche sich ohne den Support bearbeiten lassen.
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.

  • 5 stars
    Kommentar von: tosc
    22.07.10 @ 09:34:03
  • Kommentar von: cmu
    22.07.10 @ 12:34:14

    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';

  • 5 stars
    Kommentar von: tosc
    22.07.10 @ 14:04:28

    ist das 2008er?

  • Kommentar von: cmu
    22.07.10 @ 14:12:01

    Ja! Genau genommen 2008 R2!

  • Kommentar von: tosc
    22.07.10 @ 15:31:08

    da funktioniert auch das o.g. SQL nicht :-( grrr.
    aber warum brauchst Du noch die Rolle?

  • Kommentar von: cmu
    22.07.10 @ 15:39:56

    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?

  • 5 stars
    Kommentar von: tosc
    22.07.10 @ 15:59:00

    ... ich bin von der rolle! klima ist ausgefallen!

Einen Kommentar hinterlassen

You must be logged in to leave a comment. Log in now!

If you have no account yet, you can register now...
(It only takes a few seconds!)