Abfragen des SQL Server-Systemkatalogs

Dynamische Anwendungen, bei denen nicht im Programmcode festgelegt ist, dass sie nur einen bestimmten Satz von Tabellen und Sichten unterstützen, müssen über einen Mechanismus verfügen, um die Struktur und die Attribute der Objekte in einer Datenbank festzustellen, mit der die Anwendungen eine Verbindung herstellen. Diese Anwendungen können Informationen wie z. B. die folgenden benötigen:

  • Die Anzahl und Namen der Tabellen und Sichten in einer Datenbank.
  • Die Anzahl der Spalten in einer Tabelle oder Sicht zusammen mit Name, Datentyp, Dezimalstellen und Genauigkeit jeder Spalte.
  • Die für eine Tabelle definierten Einschränkungen.
  • Die für eine Tabelle definierten Indizes und Schlüssel.

Der SQL Server 2005-Systemkatalog stellt diese Informationen für SQL Server-Datenbanken bereit. Der Kern des SQL Server 2005-Systemkatalogs ist eine Reihe von Systemtabellen, die Metadaten enthalten, die die Objekte in einer Instanz von SQL Server beschreiben. Metadaten sind Daten, die die Attribute von Objekten in einem System beschreiben. SQL Server-Anwendungen können auf die Informationen in den Systemkatalogen auf mehrere Weisen zugreifen, nämlich mithilfe von Folgendem:

  • Katalogsichten. Diese Zugriffsmethode wird empfohlen.
  • Informationsschemasichten
  • OLE DB-Schemarowsets
  • ODBC-Katalogfunktionen
  • Gespeicherte Systemprozeduren und Systemfunktionen

Katalogsichten

SQL Server 2005 führt Katalogsichten als völlig neue relationale Schnittstelle zu den Metadaten im Systemkatalog ein. Diese Sichten ermöglichen den Zugriff auf Metadaten, die in jeder Datenbank auf dem Server gespeichert sind.

ms189082.note(de-de,SQL.90).gifHinweis:
Katalogsichten ermöglichen keinen Zugriff auf Metadaten zur Replikation, zum SQL Server-Agent oder zu Sicherungen.

Es wird aus folgenden Gründen empfohlen, für den Zugriff auf Metadaten Katalogsichten zu verwenden:

  • Alle Metadaten werden in Form von Katalogsichten zur Verfügung gestellt.
  • Katalogsichten zeigen die Metadaten in einem Format, das unabhängig von der Implementierung einer Katalogtabelle ist, und sind somit nicht von Änderungen in den zugrunde liegenden Katalogtabellen betroffen.
  • Katalogsichten sind die effektivste Möglichkeit des Zugriffs auf Kernservermetadaten.
  • Katalogsichten sind die allgemeine Schnittstelle zu Katalogmetadaten und bieten die direkteste Möglichkeit, angepasste Formulare aus diesen Metadaten aufzurufen, zu transformieren und darzustellen.
  • Die Katalogsichten und ihre Spalten besitzen beschreibende Namen. Die Abfrageergebnisse stimmen mit dem überein, was Benutzer erwarten, die nur geringe Kenntnisse des Features besitzen, das den abgefragten Metadaten entspricht.
ms189082.note(de-de,SQL.90).gifWichtig:
In zukünftigen Versionen von SQL Server wird die Definition der Systemkatalogsichten von Microsoft möglicherweise erweitert, indem am Ende der Spaltenliste Spalten hinzugefügt werden. Von der Verwendung der Syntax SELECT * FROM sys.catalog_view_name im Produktionscode wird abgeraten, da sich die Anzahl der zurückgegebenen Spalten möglicherweise ändert und Ihre Anwendung dadurch beschädigt werden kann.

Beispiele zum Abfragen des Systemkatalogs mithilfe von Katalogsichten finden Sie unter FAQ: Abfragen des SQL Server-Systemkatalogs.

Informationsschemasichten

Informationsschemasichten basieren auf Katalogsichtdefinitionen, die im SQL-92-Standard festgelegt wurden. Sie stellen die Kataloginformationen in einem Format dar, das heißt unabhängig von der Implementierung einer Katalogtabelle, und sind somit nicht von Änderungen in den zugrunde liegenden Katalogtabellen betroffen. Anwendungen, die diese Sichten verwenden, können zwischen heterogenen SQL-92-kompatiblen Datenbanksystemen portiert werden. Weitere Informationen finden Sie unter Informationsschemasichten (Transact-SQL).

ms189082.note(de-de,SQL.90).gifHinweis:
Informationsschemasichten enthalten keine Metadaten, die für SQL Server 2005 spezifisch sind.

Kompatibilitätssichten

Viele der Systemtabellen aus früheren Versionen von SQL Server sind jetzt in SQL Server 2005 als eine Gruppe von Sichten implementiert worden. Diese Sichten werden als Kompatibilitätssichten bezeichnet und werden lediglich aus Gründen der Abwärtskompatibilität bereitgestellt. Sie zeigen dieselben Metadaten, die auch in SQL Server 2000 verfügbar sind. Allerdings enthalten sie keine der Metadaten zu den Features, die mit SQL Server 2005 eingeführt wurden. Wenn Sie also neue Features, wie z. B. Service Broker oder die Partitionierung, verwenden, müssen Sie Katalogsichten verwenden. Allein dies ist schon ein gutes Argument, zum Verwenden der Katalogsichten zu wechseln. Ein weiteres Argument für den Wechsel zu den Katalogsichten besteht in der Tatsache, dass es bei Spalten in Kompatibilitätssichten, in denen Benutzer-IDs und Typ-IDs gespeichert sind, zur Rückgabe von NULL-Werten oder zum Auslösen von arithmetischen Überläufen kommen kann. Das liegt daran, dass Sie in SQL Server 2005 mehr als 32.767 Benutzer und Datentypen erstellen können. Angenommen, Sie müssten z. B. 32.768 Benutzer erstellen und würden anschließend die folgende Abfrage ausführen: SELECT * FROM sys.sysusers. Wenn dann ARITHABORT auf ON gesetzt ist, erzeugt die Abfrage einen arithmetischen Überlauffehler. Wenn ARITHABORT auf OFF gesetzt ist, gibt die uid-Spalte NULL zurück.

Um diese Probleme zu vermeiden, wird empfohlen, die neuen Katalogsichten zu verwenden, die mit der erhöhten Anzahl von Benutzer-IDs und Typ-IDs zurechtkommen.

OLE DB-Schemarowsets

Die OLE DB-Spezifikation definiert eine IDBSchemaRowset-Schnittstelle, die eine Reihe von Schemarowsets verfügbar macht, welche die Kataloginformationen enthalten. Die OLE DB-Schemarowsets stellen eine Standardmethode zur Darstellung von Kataloginformationen dar, die von verschiedenen OLE DB-Anbietern unterstützt wird. Die Rowsets sind unabhängig von der Struktur der zugrunde liegenden Katalogtabellen. Weitere Informationen finden Sie unter Schema Rowset Support (OLE DB).

Der SQL Native Client-OLE DB-Anbieter unterstützt eine Erweiterung zu IDBSchemaRowset, mit der Kataloginformationen für die in verteilten Abfragen verwendeten Verbindungsserver gemeldet werden. Weitere Informationen finden Sie unter LINKEDSERVERS Rowset (OLE DB).

ODBC-Katalogfunktionen

Die ODBC-Spezifikation definiert eine Reihe von Katalogfunktionen, die Resultsets mit den Kataloginformationen zurückgeben. Diese Funktionen stellen eine Standardmethode zur Darstellung von Kataloginformationen dar, die von verschiedenen ODBC-Treibern unterstützt wird. Die Resultsets sind unabhängig von der Struktur der zugrunde liegenden Katalogtabellen.

Der SQL Native Client-ODBC-Treiber unterstützt zwei treiberspezifische Funktionen, die Kataloginformationen für die in verteilten Abfragen verwendeten Verbindungsserver melden. Weitere Informationen finden Sie unter Using Catalog Functions.

Gespeicherte Systemprozeduren und Systemfunktionen

Transact-SQL definiert gespeicherte Systemprozeduren und Systemfunktionen des Servers, die Kataloginformationen zurückgeben. Obwohl diese gespeicherten Prozeduren und Funktionen SQL Server-spezifisch sind, bewirken sie eine Isolierung der Benutzer von der Struktur der zugrunde liegenden Systemkatalogtabellen. Weitere Informationen finden Sie unter Metadatenfunktionen (Transact-SQL) und Gespeicherte Systemprozeduren (Transact-SQL).

Siehe auch

Aufgaben

Behandlung von Problemen bei der Sichtbarkeit von Metadaten

Konzepte

FAQ: Abfragen des SQL Server-Systemkatalogs

Andere Ressourcen

Systemsichten (Transact-SQL)
Systemtabellen (Transact-SQL)
Katalogsichten (Transact-SQL)
Kompatibilitätssichten (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005