Neulich beschrieb ich, wie wir ein Problem in den seit SQL-Server-2005 versteckten Systemtabellen mittels dem Hex-Editor lösten. Mittlerweile las ich bei Paul Randal, wie man die Systemtabellen nicht nur mittels SELECT lesen, sondern auch ändern kann – echt krass.

Ursprünglich wurde das übrigens von Laurentiu Cristofor beschrieben. Ich nehme an, Paul muss jetzt – da er nicht mehr bei MS arbeitet – aufpassen, dass er nur Dinge ausplaudert, die schon irgendwo veröffentlicht wurden, sonst würde er nicht bei jedem Kikifitz eine öffentliche Quelle angeben… 😉

  1. Den SQL-Server im Single-User-Modus starten (-m).
    Meiner Ansicht nach am einfachsten mit dem "SQL Server Configuration Manager" (aus "Start | Alle Programme | Microsoft SQL Server 2005 | Configuration Tools"): SQL-Server-Dienst doppelklicken, "Eigenschaften", dritten Reiter ("Advanced") auswählen, in der Liste "Startup Parameters" doppelklicken und da am Ende ";-m" ergänzen. Jetzt den Dienst neu starten.
  2. Mittels Dedicated-Admin-Connection (DAC) zum SQL-Server verbinden ("-A" beim sqlcmd.exe).

Und schon kann man die internen versteckten Systemtabellen zugreifen und ändern… 😀
Danach muss man nur noch den Single-User-Modus für den SQL-Server wieder rausnehmen und den Dienst neu starten. Ist das gut?

Risiken und Nebenwirkungen

Microsoft hatte übrigens gute Gründe den Zugriff auf diese Tabellen zu verhindern. Wer also nicht genau weiß was er tut, der sollte es lassen. Man kann eine Datenbank damit sehr gründlich zerstören. 🙁