Der Computer ist die Lösung auf der Suche nach Problemen

SQL

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
sql1
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
sql2
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“
sql3
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.
sql4
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.„nstanzname“MSSQLServer\
sql5
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.