Aug 15
MSSQL und der ausgesperrte SysAdmin…
Als sa (SysAdmin) auf einem Microsoft SQL Server ist man Herr über die gesamte SQL-Instanz und kann alles damit anstellen. Nur dumm, wenn sich der sa Account einmal selbst automatisch deaktiviert oder man das Passwort vergessen hat…
Automatisches Deaktivieren passiert z.B. wenn für den Account Enforce Password Policy aktiviert ist und man sich zu oft bei der Passworteingabe vertut. 😉
Standardmäßig haben lokale Administratoren auf dem Rechner ebenfalls sysadmin-Rechte. Wenn das der Fall ist, ist es recht einfach und man loggt sich mittels als Administrator gestartetem MSSQL Management Studio per Windows Authentication auf die betroffene Instanz ein. Anschließend geht man in die Eigenschaften des sa Logins und setzt unter „Status“ das Login wieder auf „Enabled“.
Es gibt allerdings auch Szenarien, in denen man der Administratoren-Gruppe absichtlich die sa Rechte vorher entzogen hat (Best Security Practice). Hier wird es etwas schwieriger, aber nicht unmöglich.
Als allererstes startet man eine Eingabeaufforderung mit Administratorrechten. Dann muss man den MSSQL Server im Single-User Mode starten. Das lässt sich mittels des folgenden Kommandos bewerkstelligen: NET START MSSQL$INSTANZNAME /m (den Dienst natürlich zuvor erst einmal beenden). Zu guter Letzt hilft das Kommando sqlcmd (bzw. osql), welches sich standardmäßig im Verzeichnis C:\Program Files\Microsoft SQL Server\100\Tools\Binn befindet.
sqlcmd -E -S SERVER\INSTANZNAME -Q „ALTER LOGIN sa ENABLE“
Reaktiviert den deaktivierten Account.
sqlcmd -E -S SERVER\INSTANZNAME -Q „ALTER LOGIN sa WITH PASSWORD = ’newPassword‘ UNLOCK“
Entsperrt ihn und weist ein neues Passwort zu.
sqlcmd -E -S SERVER\INSTANZNAME -Q „ALTER LOGIN sa WITH CHECK_POLICY = OFF“
Ermöglicht es, die Password Policy für den Account sa für immer ausschalten, damit man sich z.B. selbst nicht aus Versehen irgendwann mal wieder aussperrt…
Der Switch -E baut eine vertrauenswürtige Verbindung auf. Man kann sqlcmd auch ohne -Q starten und einzelne SQL Befehle von Hand in die Konsole eintippen. Man darf dann nur nicht das GO in der letzten Zeile vergessen, damit die Befehle auch tatsächlich ausgeführt werden.
Sollte es überhaupt keinen sysadmin-fähigen User mehr geben, wünsche ich ggf. viel Spaß mit einer (Re-)Installation der SQL-Serverinstanz… 🙂