Freigeben über


Systembasistabellen

Gilt für:SQL ServerAzure SQL Managed Instance

Systembasistabellen sind die zugrunde liegenden Tabellen, in denen die Metadaten für eine bestimmte Datenbank gespeichert werden. Die master Datenbank ist in dieser Hinsicht besonders, da sie einige zusätzliche Tabellen enthält, die in keiner der anderen Datenbanken gefunden werden. Diese Tabellen enthalten permanente Metadaten, deren Bereich serverweit ist.

Wichtig

Die Systembasistabellen werden nur innerhalb des SQL Server-Datenbankmoduls verwendet und dienen nicht der allgemeinen Kundennutzung. Systembasistabellen können geändert werden, und die Kompatibilität ist nicht garantiert.

Systembasistabellenmetadaten

Ein Grantee, der CONTROLüber berechtigungen für ALTER eine Datenbank verfügt, VIEW DEFINITIONkann systembasistabellenmetadaten in der sys.objects Katalogansicht anzeigen. Der Grantee kann auch die Namen und Objekt-IDs von Systembasistabellen mithilfe integrierter Funktionen wie OBJECT_NAME und OBJECT_ID auflösen.

Um eine Bindung an eine Systembasistabelle herzustellen, muss ein Benutzer mithilfe der dedizierten Administratorverbindung (DAC) eine Verbindung mit der SQL Server-Instanz herstellen. Wenn Sie versuchen, eine SELECT Abfrage aus einer Systembasistabelle auszuführen, ohne eine Verbindung mithilfe von DAC herzustellen, wird ein Fehler ausgelöst.

Wichtig

Der Zugriff auf Systembasistabellen mithilfe von DAC wurde nur für Microsoft-Mitarbeiter entwickelt, und es handelt sich nicht um ein unterstütztes Kundenszenario.

Systembasistabellen

In der folgenden Tabelle werden die einzelnen Systembasistabellen in SQL Server aufgelistet und beschrieben.

Basistabelle Beschreibung
sys.sysschobjs Ist in jeder Datenbank vorhanden. Jede Zeile stellt ein Objekt in der Datenbank dar.
sys.sysbinobjs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede Service Broker-Entität in der Datenbank. Zu den Dienstbrokerentitäten gehören die folgenden Objekte:

Nachrichtentyp
Dienstvertrag
Dienst
Die Namen und Typen verwenden binäre Sortierung, die nicht geändert wird.
sys.sysclsobjs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede klassifizierte Entität, die dieselben gemeinsamen Eigenschaften verwendet, die die folgenden Objekte enthalten:

Versammlung
Sicherungsmedium
Volltextkatalog
Partitionsfunktion
Partitionsschema
Dateigruppe
Verschleierungsschlüssel
Schema
sys.sysnsobjs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede Namespace-bezogene Entität. Diese Tabelle wird zum Speichern von XML-Auflistungsentitäten verwendet.
sys.syscolpars Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede Spalte in einer Tabelle, Sicht oder Tabellenwertfunktion. Sie enthält auch Zeilen für jeden Parameter einer Prozedur oder einer Funktion.
sys.systypedsubobjs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede typisierte untergeordnete Entität. Nur Parameter für Partitionsfunktionen fallen in diese Kategorie.
sys.sysidxstats Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden Index oder Statistiken für Tabellen und indizierte Sichten

Anmerkung: Jeder Index (mit Ausnahme von Heap) ist einer Statistik zugeordnet, die denselben Namen wie der Index hat.
sys.sysiscols Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden permanenten Index und jede Statistikspalte.
sys.sysscalartypes Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden benutzerdefinierten oder Systemtyp.
sys.sysdbreg Ist nur in der master Datenbank vorhanden. Enthält eine Zeile für jede registrierte Datenbank.
sys.sysxsrvs Ist nur in der master Datenbank vorhanden. Enthält eine Zeile für jeden lokalen, Verbindungs- oder Remoteserver.
sys.sysrmtlgns Diese Systembasistabelle ist nur in der master Datenbank vorhanden. Enthält eine Zeile für jede Remoteanmeldungszuordnung. Sie wird für die Zuordnung von eingehenden lokalen Anmeldungen, die vorgeben, von einem entsprechenden Server zu stammen, an eine tatsächliche lokale Anmeldung verwendet.
sys.syslnklgns Ist nur in der master Datenbank vorhanden. Enthält eine Zeile für jede verknüpfte Anmeldungszuordnung. Verknüpfte Anmeldungszuordnungen werden von Remoteprozeduraufrufen und verteilten Abfragen vom lokalen Server zum entsprechenden Verbindungsserver verwendet.
sys.sysxlgns Ist nur in der master Datenbank vorhanden. Enthält eine Zeile für jeden Serverprinzipal.
sys.sysdbfiles Ist in jeder Datenbank vorhanden. Wenn die Spalte dbid null ist, stellt die Zeile eine Datei dar, die zu dieser Datenbank gehört. In der master Datenbank kann die Spalte dbid ungleich Null sein. Wenn dies der Fall ist, steht die Zeile für eine Masterdatei.
sys.sysusermsg Ist nur in der master Datenbank vorhanden. Jede Zeile stellt eine benutzerdefinierte Fehlermeldung dar.
sys.sysprivs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede Berechtigung auf Datenbank- oder Serverebene.

Hinweis: Berechtigungen auf Serverebene werden in der master Datenbank gespeichert.
sys.sysowners Ist in jeder Datenbank vorhanden. Jede Zeile stellt einen Datenbankprinzipal dar.
sys.sysobjkeycrypts Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden symmetrischen Schlüssel, jede Verschlüsselung oder kryptografische Eigenschaft, die einem Objekt zugeordnet ist.
sys.syscerts Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jedes Zertifikat in einer Datenbank.
sys.sysasymkeys Ist in jeder Datenbank vorhanden. Jede Zeile stellt einen asymmetrischen Schlüssel dar.
sys.ftinds Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden Volltextindex in der Datenbank.
sys.sysxprops Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede erweiterte Eigenschaft.
sys.sysallocunits Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede Speicherzuordnungseinheit.
sys.sysrowsets Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jedes Partitionsrowset für einen Index oder einen Heap.
sys.sysrowsetrefs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden Index eines Rowsetverweises.
sys.syslogshippers Ist nur in der master Datenbank vorhanden. Enthält eine Zeile für jeden Datenbankspiegelungszeugen.
sys.sysremsvcbinds Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede Remotedienstbindung.
sys.sysconvgroup Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede Dienstinstanz von Service Broker.
sys.sysxmitqueue Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede Übertragungswarteschlange von Service Broker.
sys.sysdesend Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden sendenden Endpunkt einer Service Broker-Konversation.
sys.sysdercv Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden empfangenden Endpunkt einer Service Broker-Konversation.
sys.sysendpts Ist nur in der master Datenbank vorhanden. Enthält eine Zeile für jeden im Server erstellten Endpunkt.
sys.syswebmethods Ist nur in der master Datenbank vorhanden. Enthält eine Zeile für jede für einen SOAP-aktivierten HTTP-Endpunkt definierte SOAP-Methode, die auf dem Server erstellt wird.
sys.sysqnames Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden Namespace oder jeden qualifizierten Namen für ein 4-Byte-ID-Token.
sys.sysxmlcomponent Ist in jeder Datenbank vorhanden. Jede Zeile stellt eine XML-Schema-Komponente dar.
sys.sysxmlfacet Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jedes XML-Facet (Beschränkung) der XML-Typdefinition.
sys.sysxmlplacement Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede XML-Platzierung für XML-Komponenten.
sys.syssingleobjrefs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden allgemeinen N-zu-1-Verweis.
sys.sysmultiobjrefs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden allgemeinen N-zu-N-Verweis.
sys.sysobjvalues Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jede allgemeine Werteigenschaft einer Entität.
sys.sysguidrefs Ist in jeder Datenbank vorhanden. Enthält eine Zeile für jeden GUID-klassifizierten ID-Verweis.

Aktualisieren von Systembasistabellen

Sie können die Daten in den Systemtabellen über die Systemkatalogsichten abrufen. Um die Metadaten in einer Systembasistabelle zu aktualisieren, verwenden Sie die entsprechende Transact-SQL-Schnittstelle (z. B. DDL-Anweisungen). Systemtabellen können nicht manuell aktualisiert werden. SQL Server meldet die folgenden Meldungen, wenn Sie direkte Aktualisierungen an Systemtabellen ausführen.

Eine Systemtabelle wird manuell aktualisiert.

Msg 17659: Warning: System table ID <id> has been updated directly in database ID <id> and cache coherence may not have been maintained. SQL Server should be restarted.

Starten einer Datenbank mit einer Systemtabelle, die manuell aktualisiert wurde

Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.

Führen Sie den befehl DBCC_CHECKDB aus, nachdem eine Systemtabelle manuell aktualisiert wurde.

Msg 3859: Warning: The system catalog was updated directly in database ID 17, most recently at date_time.

Wenn Sie manuelle Aktualisierungen an einer Systemtabelle ausführen und ein Problem auftreten, werden Sie möglicherweise aufgefordert, aus einer Sicherung wiederherzustellen oder die Daten aus der betroffenen Datenbank in eine neue Datenbank zu kopieren. Weitere Informationen finden Sie unter Benutzeraktionen für MSSQLSERVER_8992.