Delen via


sys.internal_tables (Transact-SQL)

Van toepassing op:SQL Server

Retourneert één rij voor elk object dat een interne tabel is. Interne tabellen worden automatisch gegenereerd door SQL Server ter ondersteuning van verschillende functies. Wanneer u bijvoorbeeld een primaire XML-index maakt, maakt SQL Server automatisch een interne tabel om de versnipperde XML-documentgegevens te behouden. Interne tabellen worden weergegeven in het sys schema van elke database en hebben unieke, door het systeem gegenereerde namen die hun functie aangeven, bijvoorbeeld xml_index_nodes_2021582240_32001 of queue_messages_1977058079.

Kolomnaam Gegevenstype Beschrijving
Kolommen overgenomen van sys.objects Zie sys.objects voor een lijst met kolommen die door deze weergave worden overgenomen.
internal_type tinyint Type van de interne tabel:

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
204 = FULLTEXT_INDEX_MAP
205 = QUERY_NOTIFICATION
206 = SERVICE_BROKER_MAP
207 = EXTENDED_INDEXES (zoals een ruimtelijke 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) Beschrijving van het type interne tabel:

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_INDEX_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 van het bovenliggende item, ongeacht of het een schemabereik heeft of niet. Anders, 0 als er geen ouder is.

queue_messages = object_id van wachtrij

xml_index_nodes = object_id van de XML-index

fulltext_catalog_freelist = fulltext_catalog_id van de volledige tekstcatalogus

fulltext_index_map = object_id van de volledige-tekstindex

query_notificationof service_broker_map = 0

extended_indexes = object_id van een uitgebreide index, zoals een ruimtelijke index

object_id van de tabel waarvoor het bijhouden van tabellen is ingeschakeld = change_tracking
parent_minor_id Int Secundaire id van het bovenliggende item.

xml_index_nodes = index_id van de XML-index
extended_indexes = index_id van een uitgebreide index, zoals een ruimtelijke index

0 = queue_messages, , fulltext_catalog_freelistfulltext_index_map, , query_notification, of service_broker_mapchange_tracking
lob_data_space_id Int Niet-nulwaarde is de id van de gegevensruimte (bestandsgroep of partitieschema) die de grote objectgegevens (LOB) voor deze tabel bevat.
filestream_data_space_id Int Gereserveerd voor toekomstig gebruik.

Interne tabellen bevatten geen gegevens die toegankelijk zijn voor gebruikers en hun schema zijn vast en onveranderbaar. U kunt niet verwijzen naar interne tabelnamen in Transact-SQL instructies. U kunt bijvoorbeeld geen instructie uitvoeren, zoals SELECT * FROM <sys.internal_table_name>. U kunt echter query's uitvoeren op catalogusweergaven om de metagegevens van interne tabellen te bekijken.

Machtigingen

De zichtbaarheid van de metagegevens in catalogusweergaven is beperkt tot beveiligbare items waarvan een gebruiker eigenaar is of waarvoor de gebruiker een bepaalde machtiging heeft gekregen. Zie Zichtbaarheidsconfiguratie voor metagegevensvoor meer informatie.

Opmerkingen

Interne tabellen worden op dezelfde bestandsgroep als de bovenliggende entiteit geplaatst. U kunt de catalogusquery in voorbeeld F gebruiken om het aantal pagina's te retourneren dat interne tabellen verbruiken voor gegevens in rij, out-of-row en large object (LOB).

U kunt de sp_spaceused systeemprocedure gebruiken om ruimtegebruiksgegevens voor interne tabellen te retourneren. sp_spaceused rapporteert interne tabelruimte op de volgende manieren:

  • Wanneer een wachtrijnaam is opgegeven, wordt er verwezen naar de onderliggende interne tabel die aan de wachtrij is gekoppeld en wordt het opslagverbruik gerapporteerd.

  • Pagina's die worden gebruikt door de interne tabellen van XML-indexen, ruimtelijke indexen en volledige-tekstindexen, worden opgenomen in de index_size kolom. Wanneer een tabel- of geïndexeerde weergavenaam is opgegeven, worden de pagina's voor de XML-indexen, ruimtelijke indexen en volledige-tekstindexen voor dat object opgenomen in de kolommen reserved en index_size.

Voorbeelden

In de volgende voorbeelden ziet u hoe u query's kunt uitvoeren op interne tabelmetagegevens met behulp van catalogusweergaven.

Eén. Interne tabellen weergeven die kolommen overnemen uit de catalogusweergave sys.objects

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

B. Alle interne tabelmetagegevens retourneren (inclusief de metagegevens die worden overgenomen van sys.objects)

SELECT * FROM sys.internal_tables;

C. Interne tabelkolommen en kolomgegevenstypen retourneren

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
     INNER JOIN sys.columns AS col
         ON itab.object_id = col.object_id
     INNER JOIN sys.types AS typ
         ON typ.user_type_id = col.user_type_id
ORDER BY itab.name, col.column_id;

D. Interne tabelindexen retourneren

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

E. Interne tabelstatistieken retourneren

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

F. Informatie over interne tabelpartitie en toewijzingseenheid retourneren

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
     INNER 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)
     INNER JOIN sys.partitions AS p
         ON p.object_id = idx.object_id
        AND p.index_id = idx.index_id
     INNER 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. Interne tabelmetagegevens voor XML-indexen retourneren

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
     INNER JOIN sys.tables AS t
         ON it.parent_id = t.object_id
     INNER 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. Interne tabelmetagegevens retourneren voor Service Broker-wachtrijen

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
     INNER JOIN sys.service_queues AS q
         ON it.parent_id = q.object_id
WHERE it.internal_type_desc = 'QUEUE_MESSAGES';
GO

Ik. Interne tabelmetagegevens retourneren voor alle Service Broker-services

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