Startseite > MS SQL Server > Was tun wenn Systemadministratoren auf einen SQL 2008 gesperrt oder gelöscht sind ?

Was tun wenn Systemadministratoren auf einen SQL 2008 gesperrt oder gelöscht sind ?


Folgende Situationen:
Sie haben ausversehen alle Logins mit “sysadmin” Rechten gelöscht?
Es gibt keine Logins in der “sysadmin” Rolle und sie kennen das “sa” Kennwort nicht?
Das “sa” Konto wurde nach der Installation umbenannt, sie wissen weder den neuen Namen noch das Kennwort und es gibt kein Login mit “sysadmin” Rechten.

Diese Situationen konnte man im SQL Server 2005 beruhigt beheben, da bei einer standard Installation die lokale Gruppe “VORDEFINIERT\ADMINISTRATOREN” als Login in die Rolle “sysadmin” des Servers mit eingefügt wurde. Dadurch konnte jeder Benutzer der Mitglied der lokalen Administratoren war auch auf den SQL Server zugreifen. Das konnte auch schon mal jeder Domänen-Administrator sein. Ab SQL 2008 ist das nicht mehr der Fall, dadurch ist es etwas schwieriger wieder einen Zugriff auf einen SQL Server zu bekommen.

Der gesamte Artikel bezieht sich auf die Hinweise in der SQL Online Doku mit dem Thema: “Herstellen einer Verbindung mit SQL Server, wenn Systemadministratoren gesperrt sind”

Die Lösung
Zum Anfang mein simuliertes Problem:
– SQL Server hat nur Windowsauthentifizierung
– das ‘sa’ Konto ist deaktiviert und ich weiß das Password nicht
– es wurden alle Logins mit “sysadmin” Rechten gelöscht

Die wichtigste Voraussetzung ist das man sich auf den Server auf dem ein SQL 2008 installiert ist, mit einem Benutzer anmeldet der zu den lokalen Administratoren gehört. Dadurch hat man die Möglichkeit den Server im “Maintenance Mode” oder auch Einzelbenutzemodus zu starten. (in diesem Modus kann man auch die Master DB zurücksichern)

Folgender Ablauf zum starten im Einzelbenutzer Modus
1. stoppen des SQL Dienstes im Konfiguration Manager und die Eingabekonsole mit “cmd” aufrufen

2. in der Konsole in das folgende “Binn” Verzeichnis der gewünschte SQL Instanz wechseln, im meinem Beispiel ist es die Standard Instanz
D:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn
admins1 
In diesem Ordner befindet sich die “sqlservr.exe” mit dieser wird der Server gestartet.

3. starten des Servers über die Konsole mit dem folgendem Befehl: sqlservr –m
wenn es eine benannte Instanz auf dem Server gibt muss der Befehl wie folgt lauten: sqlservr –m –s <Intancename>
es kann auch an der Stelle von “-m” auch der Parameter “-f” angegeben werden, damit wird der Server in der Minimalkonfiguration gestartet
admins2
nach einen erfolgreichen Start, darf dieses Fenster nicht geschlossen werden da der SQL-Dienst sonst wieder beendet wird

4. neue Eingabekonsole starten und mit sqlcmd mit dem SQL Server verbinden
Eingabe für Standard Instanz: sqlcmd –S <Servername>
Eingabe für benannte Instanz: sqlcmd –S <Servername>\<Instanzname>
admins3

5. Nach dem ich jetzt eine Verbindung mit den SQL Server Dienst hergestellt habe werde ich als erstes den SQL Login “sa” aktivieren und danach das Kennwort ändern.
ALTER LOGIN sa ENABLE
GO
ALTER LOGIN sa WITH PASSWORD = ‘123456’
GO

6. Jetzt kann der SQL Dienst in der ersten Eingabekonsole durch die Tastenkombination CTRL+C beendet werden und danach durch den SQL-Konfiguration Manager wieder normal gestartet werden.

Nun steht der Anmeldung mit den Benutzer ‘sa’ eigentlich nichts mehr im Weg, vorausgesetzt der SQL Server steht auf den gemischten LOGIN-MODE, dass heißt man kann sich sowohl mit der Windowsauthentifizierung als auch mit der SQL-Authentifizierung anmelden. Wenn das nicht der Fall erscheint eine Fehlermeldung, siehe Grafik.
admins4
Da es ja noch keine Möglichkeit gibt sich am SQL Server anzumelden und den LOGIN-Modus umzustellen, gibt es die Möglichkeit diese Änderung auch direkt in der Registry vorzunehmen, hierzu muss der folgende Schlüssel von 1 auf 2 gesetzt und der SQL Dienst im Konfiguration Manager neu gestartet werden:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.<Instanzname>\MSSQLServer\
image
Jetzt klappt auch die Anmeldung mit dem ‘sa’ Login.

Wie man sieht ist es nicht so tragisch wenn einmal alle “sysadmin” Logins gelöscht sind, mit dieser Methode kann man auch neue Logins erstellen und sich dann mit diesen an dem Server anmelden. Bei neuen Logins muss aber darauf geachtet werden das dieser Login nach dem erstellen der Server Rolle “sysadmin” hinzugefügt wird. Dafür gibt es die System SP “sp_addsrvrolemember”.

Zum Schluss noch ein Tipp:
Nach dem der Zugriff wiederhergestellt ist und die gelöschten Logins wieder angelegt worden sind, sollte das SQL Konto “sa” ein neues komplexes Passwort bekommen. Zusätzlich kann das Konto noch umbenannt und deaktiviert werden und wenn keine SQL Authentifizierung benötigt wird, kann der LOGIN Mode wieder auf Windows Authentifizierung gestellt werden.
Diese Sicherheitsempfehlungen sollten aber bei jeder SQL Server Installation umgesetzt werden.

Gruß
Mario

Kategorien:MS SQL Server
  1. Matthias
    28. Januar 2010 um 11:33

    Besten Dank für diese Anleitung! Es hat gut funktioniert.Mit freundlichen GrüssenMatthias Leemann

  2. 16. Mai 2011 um 16:06

    Danke für diesen Eintrag. Hat mir hier schnell bei einem Kollegen weitergeholfen.

  3. Gerald
    2. September 2011 um 11:08

    Hmmm. Gerade ausprobiert (MSSQL 2008, sqlservr.exe -m -f) und komme bis zum Teil, wo ich mich mit sqlcmd anlogge. Funktioniert nicht (Only one administrator can connect…).
    Bin aber lokaler Admin (nachkontrolliert). Woran könnte das liegen?

    • 4. September 2011 um 15:54

      Hallo Gerald,
      ich habe das jetzt eben auch noch einmal getestet, außerdem musste ich den Vorgang bei einem Kollegen auch ausführen
      und das ging Ohne Probleme.
      Welches OS hast Du?
      Hast du die Eingabekonsole mit dem du die sqlservr.exe gestartet hast, auch geöffnet gelassen?
      Für den Zugriff auf den Server benötigst du eine neue Eingabekonsole.

      Gruß
      Mario

  4. Georg
    7. November 2011 um 17:44

    Bei mir kam auch die Anmeldung „nur ein einzelner Administrator kann sich anmelden“. Ich habe dann im „SQL Server Configuration Manager“ alle anderen Dienste der Instanz beendet (SQL Server-Agent, Reporting-Services, Analyses-Services) und die Anmeldung war dann ohne Probleme möglich.

  5. 10. August 2012 um 14:22

    Hallo Mario – Du hast meinen Tag gerettet – vielen Dank!

    Grüße,
    Volker

  6. thorsten
    29. Mai 2013 um 11:15

    Super !
    So hast Du mir eine Neuinstallation erspart !

    Gruß,
    Thorsten

  1. 16. Mai 2011 um 16:05

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: