sys.internal_tables (Transact-SQL)

Aplica-se a:SQL Server

Retorna uma linha para cada objeto que é uma tabela interna. Tabelas internas são geradas automaticamente por SQL Server para dar suporte a vários recursos. Por exemplo, quando você cria um índice XML primário, SQL Server cria automaticamente uma tabela interna para persistir os dados do documento XML fragmentado. Tabelas internas aparecem no esquema sys de cada banco de dados e têm nomes exclusivos gerados pelo sistema que indicam sua função, por exemplo, xml_index_nodes_2021582240_32001 ou queue_messages_1977058079

As tabelas internas não contêm dados acessíveis ao usuário, e seus esquemas são fixos e inalteráveis. Não é possível referenciar nomes de tabela internos em instruções Transact-SQL. Por exemplo, você não pode executar uma instrução como SELECT * FROM <sys.internal_table_name>. Entretanto, você pode consultar as exibições do catálogo para ver os metadados das tabelas internas.

Nome da coluna Tipo de dados Descrição
<Colunas herdadas de sys.objects> Para obter uma lista de colunas herdadas por essa exibição, consulte sys.objects (Transact-SQL).
internal_type tinyint Tipo da tabela 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 (como um índice espacial)

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) Descrição do tipo de tabela 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 do pai, independentemente de ser um escopo de esquema ou não. Caso contrário, 0 se não houver nenhum pai.

= queue_messages object_id de fila

= xml_index_nodes object_id do índice xml

= fulltext_catalog_freelist fulltext_catalog_id do catálogo de texto completo

= fulltext_index_map object_id do índice de texto completo

query_notification ou service_broker_map = 0

= extended_indexes object_id de um índice estendido, como um índice espacial

object_id da tabela para a qual o controle de tabela está habilitado = change_tracking
parent_minor_id int ID secundária do pai.

= xml_index_nodes index_id do índice XML

= extended_indexes index_id de um índice estendido, como um índice espacial

0 = queue_messages, fulltext_catalog_freelist, fulltext_index_map, query_notification, service_broker_map ou change_tracking
lob_data_space_id int O valor diferente de zero é a ID do espaço de dados (esquema de partição ou grupo de arquivos) que armazena os dados de objeto grandes (LOB) dessa tabela.
filestream_data_space_id int Reservado para uso futuro.

Permissões

A visibilidade dos metadados em exibições do catálogo está limitada aos protegíveis que pertencem a um usuário ou para os quais o usuário recebeu permissão. Para obter mais informações, consulte Metadata Visibility Configuration.

Comentários

Tabelas internas são colocadas no mesmo grupo de arquivos da entidade de pai. Você pode usar a consulta de catálogo mostrada no Exemplo F abaixo para retornar o número de páginas que as tabelas internas consomem para dados de dentro da linha, fora da linha, e de objetos grandes (LOB).

Você pode usar o procedimento do sistema sp_spaceused para retornar dados de uso de espaço para tabelas internas. sp_spaceused relata o espaço interno da tabela das seguintes maneiras:

  • Quando um nome de fila é especificado, a tabela interna subjacente associada à fila é referenciada, e seu consumo de armazenamento é reportado.

  • As páginas usadas pelas tabelas internas de índices XML, índices espaciais e índices de texto completo são incluídas na coluna index_size . Quando um nome de tabela ou exibição indexada é especificado, as páginas dos índices XML, índices espaciais e índices de texto completo para esse objeto são incluídas nas colunas reservadas e index_size.

Exemplos

Os exemplos seguintes demonstram como consultar metadados de tabela interna usando as exibições do catálogo.

a. Mostrar tabelas internas que herdam colunas da exibição do catálogo sys.objects

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

B. Retorna todos os metadados de tabela interna (inclusive os herdados de sys.objects)

SELECT * FROM sys.internal_tables;  

C. Retorna as colunas de tabela interna e os tipos de dados da coluna

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. Retorna os índices de tabela interna

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. Retorna as estatísticas da tabela interna

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. Retorna a partição da tabela interna e informações da unidade de alocação

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. Retorna os metadados da tabela interna para os índices 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. Retorna os metadados da tabela interna para as filas do 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. Retorna os metadados de tabela interna para todos os serviços do Service Broker

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

Consulte Também

Exibições do Catálogo (Transact-SQL)
Exibições do catálogo de objeto (Transact-SQL)