sys.internal_tables (Transact-SQL)
Si applica a: SQL Server
Restituisce una riga per ogni oggetto che rappresenta una tabella interna. Le tabelle interne vengono generate automaticamente da SQL Server per supportare varie funzionalità. Ad esempio, quando si crea un indice XML primario, SQL Server crea automaticamente una tabella interna per rendere persistenti i dati dei documenti XML eliminati. Le tabelle interne vengono visualizzate nello schema sys di ogni database e hanno nomi univoci generati dal sistema che indicano la funzione, ad esempio xml_index_nodes_2021582240_32001 o queue_messages_1977058079
Le tabelle interne non includono dati accessibili all'utente e i loro schemi sono fissi e non modificabili. Non è possibile fare riferimento ai nomi di tabella interni nelle istruzioni Transact-SQL. Ad esempio, non è possibile eseguire un'istruzione come SELECT * FROM <sys.internal_table_name>. È tuttavia possibile eseguire query sulle viste del catalogo per vedere i metadati delle tabelle interne.
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
<Colonne ereditate da sys.objects> | Per un elenco di colonne ereditate da questa vista, vedere sys.objects (Transact-SQL).For a list of columns that this view inherits, see sys.objects (Transact-SQL). | |
internal_type | tinyint | Tipo di tabella interna: 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 (ad esempio un indice spaziale) 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) | Descrizione del tipo di tabella interna: 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 del padre, indipendentemente dal fatto che sia definito o meno a livello di ambito dello schema. 0 in assenza del padre. = queue_messages object_id della coda = xml_index_nodes object_id dell'indice xml = fulltext_catalog_freelist fulltext_catalog_id del catalogo full-text = fulltext_index_map object_id dell'indice full-text query_notification o service_broker_map = 0 = extended_indexes object_id di un indice esteso, ad esempio un indice spaziale object_id della tabella per cui è abilitato il rilevamento delle tabelle = change_tracking |
parent_minor_id | int | ID secondario del padre. = xml_index_nodes index_id dell'indice XML = extended_indexes index_id di un indice esteso, ad esempio un indice spaziale 0 = queue_messages, fulltext_catalog_freelist, fulltext_index_map, query_notification, service_broker_map o change_tracking |
lob_data_space_id | int | Un valore diverso da zero rappresenta l'ID dello spazio dei dati (filegroup o schema di partizione) contenente i dati LOB (Large Object) per questa tabella. |
filestream_data_space_id | int | Riservato a un uso futuro. |
Autorizzazioni
La visibilità dei metadati nelle viste del catalogo è limitata alle entità a protezione diretta di cui un utente è proprietario o a cui l'utente ha concesso alcune autorizzazioni. Per altre informazioni, vedere Metadata Visibility Configuration.
Osservazioni:
Le tabelle interne sono collocate nello stesso filegroup dell'entità padre. È possibile utilizzare la query del catalogo illustrata nell'esempio F seguente per restituire il numero di pagine utilizzate dalle tabelle interne per i dati all'interno di righe, all'esterno di righe e LOB (Large Object).
È possibile utilizzare la procedura di sistema sp_spaceused per restituire i dati di utilizzo dello spazio per le tabelle interne. sp_spaceused segnala lo spazio interno della tabella nei modi seguenti:
Quando il nome di una coda è specificato, viene fatto riferimento alla tabella interna sottostante associata alla coda e viene indicato l'utilizzo dello spazio da parte della tabella.
Le pagine utilizzate dalle tabelle interne di indici XML, indici spaziali e indici full-text vengono incluse nella colonna index_size . Quando viene specificato un nome di tabella o vista indicizzata, le pagine per gli indici XML, gli indici spaziali e gli indici full-text per tale oggetto vengono incluse nelle colonne riservate e index_size.
Esempi
Negli esempi seguenti viene illustrato come eseguire query sui metadati delle tabelle interne utilizzando le viste del catalogo.
R. Visualizzazione delle tabelle interne che ereditano le colonne dalla vista del catalogo sys.objects
SELECT * FROM sys.objects WHERE type = 'IT';
B. Restituzione di tutti i metadati delle tabelle interne, inclusi quelli ereditati da sys.objects
SELECT * FROM sys.internal_tables;
C. Restituzione delle colonne delle tabelle interne e dei tipi di dati colonna
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. Restituzione degli indici delle tabelle interne
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. Restituzione delle statistiche delle tabelle interne
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. Restituzione delle informazioni sulle partizioni e sulle unità di allocazione delle tabelle interne
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. Restituzione dei metadati delle tabelle interne per gli indici XML
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. Restituzione dei metadati delle tabelle interne per le code di Service Broker
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. Restituzione dei metadati delle tabelle interne per tutti i servizi di Service Broker
SELECT *
FROM tempdb.sys.internal_tables
WHERE internal_type_desc = 'SERVICE_BROKER_MAP';
GO
Vedi anche
Viste del catalogo (Transact-SQL)
Viste del catalogo oggetti (Transact-SQL)