Was ist ein SQL Server Data Dictionary?

Was ist ein Datenwörterbuch?

In SQL Server ist das Datenwörterbuch ein Satz von Datenbanktabellen, die zum Speichern von Informationen über die Definition einer Datenbank verwendet werden. Das Wörterbuch enthält Informationen zu Datenbankobjekten wie Tabellen, Indizes, Spalten, Datentypen und Ansichten.

Das Datenwörterbuch wird von SQL Server zum Ausführen von Abfragen verwendet und automatisch aktualisiert, wenn Objekte in der Datenbank hinzugefügt, entfernt oder geändert werden.

Alle Beispiele für diesen Artikel basieren auf Microsoft SQL Server Management Studio und der AdventureWorks2012-Datenbank. Sie können mit diesen kostenlosen Tools beginnen, indem Sie meinen Leitfaden Erste Schritte mit SQL Server verwenden.

Wie SQL Server das Datenwörterbuch verwendet

SQL Server verwendet das Datenbankwörterbuch, um SQL-Anweisungen zu überprüfen. Wenn Sie eine SQL-Anweisung ausführen, analysiert das DBMS (Database Management System) die Anweisung und bestimmt dann, ob die Tabellen und Felder, auf die Sie verweisen, gültig sind. Um dies schnell zu tun, verweist es auf das Datenwörterbuch.

Zusätzlich zum Testen der Gültigkeit von Anweisungen verwendet SQL Server das Datenwörterbuch, um die Generierung von Abfrageplänen zu unterstützen und auf Informationen zu verweisen, die die Struktur der Datenbank definieren.

Das Datenwörterbuch wird für SQL Server per se zu einem Leitfaden für den Zugriff auf Ihre Daten. Einfach ausgedrückt, ohne das Datenwörterbuch, obwohl SQL Server die SQL-Sprache kennen und verstehen würde, würde es nicht über Ihre Datenbanktabellen und -spalten Bescheid wissen; Daher wäre es nicht in der Lage, sie abzufragen.

Andere Verwendungen für das Datenwörterbuch

Da das Datenwörterbuch die Definition der Datenbank enthält, ist es eine wirklich gute Ressource für Sie, um Informationen über die Datenbank zu erhalten. Das wirklich Coole ist, dass das Datenwörterbuch aus SQL-Tabellen und -Ansichten besteht. Dies bedeutet, dass Sie Informationen über die Datenbank durch Abfragen erhalten können!

Datenwörterbücher werden von Designern und Entwicklern verwendet, um die Struktur der Datenbank zu verstehen. Sie können sich das Wörterbuch als aktuelles Referenzdokument vorstellen.

Entwurfstools wie SQL Server Management Studio zeigen Informationen zu den Datenbanken über den Objekt-Explorer mithilfe des Datenwörterbuchs an.

SSMS-Objekt-Explorer
SQL Server Management Studio-Objekt-Explorer

Die oben aufgeführten Tabellen sind nicht magisch bekannt, sondern der Objekt-Explorer hat eine Abfrage an das Datenwörterbuch ausgegeben, um alle Benutzertabellen abzurufen.

Das Datenwörterbuch wird in einer Reihe von Systemtabellen gespeichert. Obwohl Sie diese Tabellen direkt abfragen können, behält sich Microsoft das Recht vor, die Systemtabellen, aus denen das Datenwörterbuch besteht, zu ändern. Aus diesem Grund empfehlen sie, die INFORMATION_SCHEMA-Ansichten abzufragen, anstatt direkt auf die Tabellen zuzugreifen.

Da Sie das Datenwörterbuch selbst abfragen können, können Sie einige Fragen beantworten, die sonst viel Jagen und Picken durch den Objekt-Explorer erfordern würden. Wie können Sie beispielsweise alle Tabellen und Ansichten mithilfe der Spalte BusinessEntityID leicht finden? Ohne das Datenwörterbuch müssen Sie den Objekt-Explorer verwenden und jede einzelne Tabelle und Ansicht öffnen und die Definitionen für die Spalte durchsehen. Mithilfe des Datenwörterbuchs kann dies jedoch mithilfe einer einfachen Abfrage erfolgen.

INFORMATION_SCHEMA-Ansichten

Die in SQL Server enthaltenen INFORMATION_SCHEMA-Ansichten entsprechen dem SQL-92-ISO-Standard. Dies bedeutet, dass andere Datenbankanbieter, die dem ISO-Standard entsprechen, den gleichen Satz von Ansichten bereitstellen.

Hier sind einige der am häufigsten verwendeten Ansichten und ihre Beschreibungen:

  • COLUMNS – Gibt eine Zeile für jede Spalte zurück, die der aktuelle Benutzer in der aktuellen Datenbank verwenden darf. Diese Ansicht kann verwendet werden, um den Datentyp und die Tabelle zu bestimmen, für die die Spalte definiert ist.
  • TABLES – Gibt eine Zeile für jede Tabelle zurück, auf die die Benutzer in der aktuellen Datenbank zugreifen können. Beachten Sie, dass sowohl Tabellen als auch Ansichten mit der Tabellenansicht zurückgegeben werden.
  • VIEW_TABLE_USAGE – Gibt eine Zeile für jede Tabelle zurück, die in einer Ansicht in der aktuellen Datenbank verwendet wird.
  • ANSICHTEN – Gibt eine Zeile für Ansichten zurück, auf die mit den Berechtigungen des aktuellen Benutzers aus der aktuellen Datenbank zugegriffen werden kann.

Beispiele für die Verwendung von INFORMATION_SCHEMA-Ansichten

Auflisten aller Tabellen, die eine angegebene Spalte enthalten

Sie können dies mit INFORMATION_SCHEMA tun.SPALTEN anzeigen. Zum Beispiel die folgenden Listen alle Tabellen und Ansichten enthalten die Spalte BusinessEntityID

SELECT TABLE_NAMEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.COLUMNSWHERE COLUMN_NAME = 'BusinessEntityID'

Wie Sie sich vorstellen können, kann das Datenwörterbuch nützlich sein! Können Sie sich vorstellen, jede Definition von Hand durchsuchen zu müssen, um alle Vorkommen eines Feldes in der Datenbank zu finden?

Alle Tabellen in einer Datenbank auflisten

Verwenden Sie das INFORMATION_SCHEMA.Tabellenansicht, um dies zu tun.

SELECT TABLE_NAME, TABLE_TYPEFROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESORDER BY TABLE_NAME

Diese Abfrage gibt sowohl Basistabellen als auch Ansichten zurück.

Listen Sie die Anzahl der Tabellen in jedem Schema auf

In diesem Beispiel werden jedes Schema und die Anzahl der darin definierten Tabellen und Ansichten aufgelistet:

SELECT TABLE_SCHEMA, Count(TABLE_SCHEMA)FROM AdventureWorks2012_Data.INFORMATION_SCHEMA.TABLESGROUP BY TABLE_SCHEMA

SQL Server-Katalogansichten

Die Katalogansichten sind eine weitere Möglichkeit, das Datenwörterbuch anzuzeigen. Ich habe das Gefühl, dass die Objektkatalogansichten mehr Informationen enthalten, und ich neige dazu, diese Ansichten über die INFORMATION_SCHEMA-Ansichten zu verwenden.

Einige der Ansichten, die ich am nützlichsten gefunden habe, sind:

  • Objekte – enthalten eine Zeile für jedes Objekt, z. B. eine FREMDSCHLÜSSEL- oder Primärschlüsseleinschränkung, die in der Datenbank definiert ist.
  • Spalten – enthalten eine Zeile für jede Spalte eines Objekts wie Ansicht oder Tabellen.
  • Tabellen – Geben Sie eine Zeile für jedes Tabellenobjekt zurück

Beispiele mit Katalogansichten

Die folgenden Beispiele verwenden die Microsoft SQL Server-Katalogansichten, um dieselben Informationen zu erhalten, wie oben mit dem INFORMATION_SCHEMA.

Auflisten aller Tabellen, die eine bestimmte Spalte enthalten

Um die Namen der Tabellen mit einer bestimmten Spalte zu erhalten, sowohl die sys.tabellen und sys.spaltenansicht muss zusammen verwendet werden. Sie werden über die object_id verbunden, mit der allgemeine Datenbankobjekte wie Tabellen und Ansichten identifiziert werden.

SELECT t.name, t.type_descFROM AdventureWorks2012_Data.sys.columns AS cINNER JOIN sys.tables AS t ON c.object_id = t.object_idWHERE c.name = 'BusinessEntityID'

Alle Tabellen in einer Datenbank auflisten

Das sys.die Tabellenansicht kann verwendet werden, um Namen aller in der Datenbank definierten Tabellen abzurufen. Diese Ansicht gibt sowohl Basistabellen als auch Ansichten zurück.

SELECT name, type_descFROM AdventureWorks2012_Data.sys.tablesORDER BY Name

Anzahl der Tabellen in jedem Schema auflisten

Das sys.die Tabellenansicht enthält keinen Schemanamen, daher wird die integrierte Funktion SCHEMA_NAME verwendet, um sie abzurufen.

SELECT SCHEMA_NAME(schema_id), count(name)FROM AdventureWorks2012_Data.sys.tablesGROUP BY SCHEMA_NAME(schema_id)

Wie Sie dem Beispiel entnehmen können, ist es etwas technischer als die Verwendung des INFORMATION_SCHEMA . Ich sage jedoch aus Erfahrung, dass in den Katalogansichten viel mehr Informationen enthalten sind … Wenn Sie eine bestimmte Frage zur Struktur einer Datenbank haben, sind dies die zu treffenden Tabellen.

Related Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.