Beim SQL Server 2005 kann bekanntlich die Systemtabellen nicht direkt Zugreifen und schon gar bearbeiten. Man sieht sie noch nicht mal. Die "echten" Systemtabellen stehen auch nicht mehr in der Master-Datenbank, sondern in der versteckten Datenbank MsSqlSystemResource. Man kann deren Dateien im Data-Verzeichnis sehen, das ist aber auch schon alles: mssqlsystemresource.mdf/ldf.
Stattdessen gibt es jede Menge Views, die man für den lesenden Zugriff nutzen kann:
- Die guten alten "Systemtabellen" von früheren Versionen werden als Views abgebildet, z.B. sysobjects. Allerdings enthalten die Views keine Informationen über neue Features, einige Attribute, die nicht mehr zutreffende Infos enthalten würden enthalten immer NULL.
- Die ANSI-Views gibt es weiterhin, z.B. INFORMATION_SCHEMA.TABLES. Hier hat sich meines Wissens nichts geändert.
- Die neuen System Management Views, die die alten Systemtabellen ablösen sollen, z.B. sys.objects. Sie sind vergleichsweise sprechend und lehnen sich sehr stark an die alten Systemtabellen an. Sie gefallen mir ganz gut.
- Die neuen Dynamic Management Views enthalten alle möglichen Laufzeitinformationen. So etwas gab es früher auch schon, z.B. die ehemaligen sysprocesses. Ein Beispiel für die Neuen ist sys.dm_exec_connections. Hier stehe ich noch am Anfang, aber das Konzept gefällt mir.
Bei meinem Bestreben die internen Abläufe des Systems zu verstehen waren mit beim SQL-Server immer die Quelltexte der Systemproceduren bzw. die View-Definitionen sehr hilfreich. Lange Zeit dachte ich, es gäbe keine Möglichkeit mir die Definitionen der Systemviews anzusehen. Aber im SQl-Server-Magazine las ich neulich, wie es geht: mit der Funktion "object_definition".
-- Definition von System-Objekten ansehen:
SELECT object_definition(object_id('dbo.sysobjects'))
Damit man im "SQL Server Management Studio" wirklich etwas sehen kann, sollte man die Ergebnisse als Text ansehen im Menü "Query | Results To | Results To Text" oder mit Strg+t und die maximal dargestellte Zeichenzahl pro Spalte auf 8192 setzen.
Dazu im Menü unter "Tools | Options" im Fenster "Options" links "Query Results | SQL Server | Results To Text" für den Wert "Maximum number of characters displayed in each column" den Wert "8192" wählen.