sys.internal_tables (Transact-SQL)

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen)

Gibt eine Zeile für jedes Objekt zurück, bei dem es sich um eine interne Tabelle handelt. Interne Tabellen werden von SQL Server automatisch generiert und dienen der Unterstützung verschiedener Funktionen. Wenn Sie beispielsweise einen primären XML-Index erstellen, erstellt SQL Server automatisch eine interne Tabelle zur persistenten Aufbewahrung der aufgeteilten XML-Dokumentdaten. Interne Tabellen werden im sys-Schema jeder Datenbank angezeigt und verfügen über eindeutige, vom System generierte Namen, die ihre Funktion angeben, z. B. xml_index_nodes_2021582240_32001 oder queue_messages_1977058079

Interne Tabellen enthalten keine Daten, auf die von Benutzern zugegriffen werden kann. Ihre Schemas stehen fest und können nicht geändert werden. Sie können in Transact-SQL-Anweisungen nicht auf interne Tabellennamen verweisen. Beispielsweise können Sie keine -Anweisung wie SELECT * FROM <sys.internal_table_name> ausführen. Sie können Katalogsichten jedoch abfragen, um die Metadaten interner Tabellen anzuzeigen.

Spaltenname Datentyp Beschreibung
<Columns inherited from sys.objects> Eine Liste der Spalten, die von dieser Sicht geerbt werden, finden Sie unter sys.objects (Transact-SQL).
internal_type tinyint Der Typ der internen Tabelle:

3 = query_disk_store_query_hints

4 = query_disk_store_query_template_parameterization

6 = query_disk_store_wait_stats

201 = queue_messages

202 = xml_index_nodes

203 = fulltext_catalog_freelist

205 = query_notification

206 = service_broker_map

207 = extended_indexes (z. B. ein räumlicher Index)

208 = filestream_tombstone

209 = change_tracking

210 = tracked_committed_transactions

220 = contained_features

225 = filetable_updates

236 = selective_xml_index_node_table

240 = query_disk_store_query_text

241 = query_disk_store_query

242 = query_disk_store_plan

243 = query_disk_store_runtime_stats

244 = query_disk_store_runtime_stats_interval

245 = query_context_settings
internal_type_desc nvarchar(60) Die Beschreibung des Typs der internen Tabelle:

QUERY_DISK_STORE_QUERY_HINTS

QUERY_DISK_STORE_QUERY_TEMPLATE_PARAMETERIZATION

QUERY_DISK_STORE_WAIT_STATS

QUEUE_MESSAGES

XML_INDEX_NODES

FULLTEXT_CATALOG_FREELIST

FULLTEXT_CATALOG_MAP

QUERY_NOTIFICATION

SERVICE_BROKER_MAP

EXTENDED_INDEXES

FILESTREAM_TOMBSTONE

CHANGE_TRACKING

TRACKED_COMMITTED_TRANSACTIONS

CONTAINED_FEATURES

FILETABLE_UPDATES

SELECTIVE_XML_INDEX_NODE_TABLE

QUERY_DISK_STORE_QUERY_TEXT

QUERY_DISK_STORE_QUERY

QUERY_DISK_STORE_PLAN

QUERY_DISK_STORE_RUNTIME_STATS

QUERY_DISK_STORE_RUNTIME_STATS_INTERVAL

QUERY_CONTEXT_SETTINGS
parent_id int ID des übergeordneten Elements, unabhängig davon, ob es über einen Schemabereich verfügt oder nicht. Andernfalls 0, wenn es kein übergeordnetes Element gibt.

queue_messages = object_id der Warteschlange

xml_index_nodes = object_id des XML-Indexes

fulltext_catalog_freelist = fulltext_catalog_id des Volltextkatalogs

fulltext_index_map = object_id des Volltextindexes

query_notification, oder service_broker_map = 0

extended_indexes = object_id eines erweiterten Indexes, z. B. eines räumlichen Indexes

object_id der Tabelle, für die die Tabellennachverfolgung aktiviert ist = change_tracking
parent_minor_id int Die Neben-ID des übergeordneten Elements.

xml_index_nodes = index_id des XML-Indexes

extended_indexes = index_id eines erweiterten Indexes, z. B. eines räumlichen Indexes

0 = queue_messages, fulltext_catalog_freelist, fulltext_index_map, query_notification, service_broker_map oder change_tracking
lob_data_space_id int Ein Wert ungleich Null ist die ID des Datenbereichs (Dateigruppe oder Partitionsschema), der die LOB-Daten (Large Object) für diese Tabelle enthält.
filestream_data_space_id int Für die zukünftige Verwendung reserviert.

Berechtigungen

Die Sichtbarkeit der Metadaten in Katalogsichten ist auf sicherungsfähige Elemente eingeschränkt, bei denen der Benutzer entweder der Besitzer ist oder für die dem Benutzer eine Berechtigung erteilt wurde. Weitere Informationen finden Sie unter Metadata Visibility Configuration.

Bemerkungen

Interne Tabellen werden in dieselbe Dateigruppe wie die übergeordnete Entität platziert. Sie können die in Beispiel F unten dargestellte Katalogabfrage zur Rückgabe der Anzahl von Seiten verwenden, die interne Tabellen für Daten innerhalb und außerhalb von Zeilen sowie LOB-Daten (Large Object) benötigen.

Sie können die systemprozedur sp_spaceused verwenden, um Speicherplatznutzungsdaten für interne Tabellen zurück zu geben. sp_spaceused gibt auf folgende Weise internen Tabellenspeicherplatz an:

  • Wird ein Warteschlangenname angegeben, wird auf die zugrunde liegende interne Tabelle, die der Warteschlange zugeordnet ist, verwiesen und ihre Speicherverwendung gemeldet.

  • Seiten, die von den internen Tabellen von XML-Indizes, räumlichen Indizes und Volltextindizes verwendet werden, sind in der index_size enthalten. Wenn ein Tabellen- oder indizierter Sichtname angegeben wird, werden die Seiten für die XML-Indizes, räumlichen Indizes und Volltextindizes für dieses Objekt in die reservierten spalten und index_size.

Beispiele

In den folgenden Beispielen wird die Abfrage von Metadaten interner Tabellen mithilfe von Katalogsichten veranschaulicht.

A. Anzeigen interner Tabellen, die Spalten aus der sys.objects-Katalogsicht erben

SELECT * FROM sys.objects WHERE type = 'IT';  

B. Zurückgeben aller Metadaten interner Tabellen (einschließlich der von sys.objects geerbten)

SELECT * FROM sys.internal_tables;  

C. Zurückgeben von Spalten und Spaltendatentypen interner Tabellen

SELECT SCHEMA_NAME(itab.schema_id) AS schema_name  
    ,itab.name AS internal_table_name  
    ,typ.name AS column_data_type   
    ,col.*  
FROM sys.internal_tables AS itab  
JOIN sys.columns AS col ON itab.object_id = col.object_id  
JOIN sys.types AS typ ON typ.user_type_id = col.user_type_id  
ORDER BY itab.name, col.column_id;  

D: Zurückgeben der Indizes interner Tabellen

SELECT SCHEMA_NAME(itab.schema_id) AS schema_name  
    , itab.name AS internal_table_name  
    , idx.*  
FROM sys.internal_tables AS itab  
JOIN sys.indexes AS idx ON itab.object_id = idx.object_id  
ORDER BY itab.name, idx.index_id;  

E. Zurückgeben der Statistiken interner Tabellen

SELECT SCHEMA_NAME(itab.schema_id) AS schema_name  
    ,itab.name AS internal_table_name  
    , s.*  
FROM sys.internal_tables AS itab  
JOIN sys.stats AS s ON itab.object_id = s.object_id  
ORDER BY itab.name, s.stats_id;  

F. Zurückgeben von Informationen zu Partitionen und Zuordnungseinheiten interner Tabellen

SELECT SCHEMA_NAME(itab.schema_id) AS schema_name  
    ,itab.name AS internal_table_name  
    ,idx.name AS heap_or_index_name  
    ,p.*  
    ,au.*  
FROM sys.internal_tables AS itab  
JOIN sys.indexes AS idx  
--     JOIN to the heap or the clustered index  
    ON itab.object_id = idx.object_id AND idx.index_id IN (0,1)  
JOIN   sys.partitions AS p   
    ON p.object_id = idx.object_id AND p.index_id = idx.index_id  
JOIN   sys.allocation_units AS au  
--     IN_ROW_DATA (type 1) and ROW_OVERFLOW_DATA (type 3) => JOIN to partition's Hobt  
--     else LOB_DATA (type 2) => JOIN to the partition ID itself.  
ON au.container_id =    
    CASE au.type   
        WHEN 2 THEN p.partition_id   
        ELSE p.hobt_id   
    END  
ORDER BY itab.name, idx.index_id;  

G. Zurückgeben der Metadaten interner Tabellen für XML-Indizes

SELECT t.name AS parent_table  
    ,t.object_id AS parent_table_id  
    ,it.name AS internal_table_name  
    ,it.object_id AS internal_table_id  
    ,xi.name AS primary_XML_index_name  
    ,xi.index_id as primary_XML_index_id  
FROM sys.internal_tables AS it  
JOIN sys.tables AS t   
    ON it.parent_id = t.object_id  
JOIN sys.xml_indexes AS xi   
    ON it.parent_id = xi.object_id  
    AND it.parent_minor_id  = xi.index_id  
WHERE it.internal_type_desc = 'XML_INDEX_NODES';  
GO  

H. Zurückgeben der Metadaten interner Tabellen für Service Broker-Warteschlangen

SELECT q.name AS queue_name  
    ,q.object_id AS queue_id  
    ,it.name AS internal_table_name  
    ,it.object_id AS internal_table_id  
FROM sys.internal_tables AS it  
JOIN sys.service_queues  AS  q ON it.parent_id = q.object_id  
WHERE it.internal_type_desc = 'QUEUE_MESSAGES';  
GO  

I. Zurückgeben der Metadaten interner Tabellen für alle Service Broker-Dienste

SELECT *   
FROM tempdb.sys.internal_tables   
WHERE internal_type_desc = 'SERVICE_BROKER_MAP';  
GO  

Weitere Informationen

Katalogsichten (Transact-SQL)
Katalogsichten für Objekte (Transact-SQL)