sys.internal_tables(Transact-SQL)

적용 대상:SQL Server

내부 테이블인 각 개체에 대해 하나의 행을 반환합니다. 내부 테이블은 다양한 기능을 지원하기 위해 SQL Server에서 자동으로 생성됩니다. 예를 들어 기본 XML 인덱스 만들 때 SQL Server는 자동으로 내부 테이블을 만들어 파쇄된 XML 문서 데이터를 유지합니다. 내부 테이블은 모든 데이터베이스의 sys 스키마에 표시되며 해당 함수를 나타내는 고유한 시스템 생성 이름(예: xml_index_nodes_2021582240_32001 또는 queue_messages_1977058079

내부 테이블에는 사용자가 액세스할 수 있는 데이터가 포함되지 않으며 해당 스키마는 고정되고 변환할 수 없습니다. Transact-SQL 문에서는 내부 테이블 이름을 참조할 수 없습니다. 예를 들어 SELECT * FROM <sys.internal_table_name> 같은 문을 실행할 수 없습니다. 그러나 카탈로그 뷰를 쿼리하여 내부 테이블의 메타데이터를 볼 수 있습니다.

열 이름 데이터 형식 설명
<sys.objects에서 상속된 열> 이 뷰가 상속하는 열 목록은 sys.objects(Transact-SQL)를 참조하세요.
internal_type tinyint 내부 테이블의 형식:

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 (예: 공간 인덱스)

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) 내부 테이블 형식에 대한 설명:

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입니다. 그렇지 않으면 부모가 없는 경우 0입니다.

= 큐 object_id queue_messages

= xml 인덱스의 xml_index_nodes object_id

= 전체 텍스트 카탈로그의 fulltext_catalog_id fulltext_catalog_freelist

= 전체 텍스트 인덱스의 object_id fulltext_index_map

query_notification 또는 service_broker_map = 0

= 공간 인덱스 같은 확장 인덱스의 object_id extended_indexes

테이블 추적이 사용되는 테이블의 object_id = change_tracking
parent_minor_id int 부모의 부 ID입니다.

= XML 인덱스의 index_id xml_index_nodes

= 공간 인덱스 같은 확장 인덱스의 index_id extended_indexes

0 = queue_messages, fulltext_catalog_freelist, fulltext_index_map, query_notification, service_broker_map 또는 change_tracking
lob_data_space_id int 0이 아닌 값은 이 테이블에 대한 LOB(큰 개체) 데이터를 보유하는 데이터 공간(파일 그룹 또는 파티션 구성표)의 ID입니다.
filestream_data_space_id int 향후 사용을 위해 예약되어 있습니다.

사용 권한

카탈로그 뷰에서 메타데이터의 표시 유형은 사용자가 소유하거나 사용자에게 일부 권한이 부여된 보안 개체로 제한됩니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.

설명

내부 테이블은 부모 엔터티와 동일한 파일 그룹에 배치됩니다. 아래의 예 6에 표시된 카탈로그 쿼리를 사용하여 내부 테이블에서 행 내부, 행 외부 및 LOB(Large Object) 데이터에 사용되는 페이지 수를 반환할 수 있습니다.

sp_spaceused 시스템 프로시저를 사용하여 내부 테이블에 대한 공간 사용량 현황 데이터를 반환할 수 있습니다. sp_spaceused 다음과 같은 방법으로 내부 테이블 공간을 보고합니다.

  • 큐 이름을 지정하면 큐와 연결된 기본 내부 테이블이 참조되고 해당 스토리지 사용량이 보고됩니다.

  • XML 인덱스, 공간 인덱스 및 전체 텍스트 인덱스의 내부 테이블에서 사용하는 페이지는 index_size 열에 포함됩니다. 테이블 또는 인덱싱된 뷰 이름을 지정하면 해당 개체의 XML 인덱스, 공간 인덱스 및 전체 텍스트 인덱스의 페이지가 예약 및index_size에 포함됩니다.

예제

다음 예제에서는 카탈로그 뷰를 사용하여 내부 테이블 메타데이터를 쿼리하는 방법을 보여 줍니다.

A. sys.objects 카탈로그 뷰에서 열을 상속하는 내부 테이블 표시

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

B. 모든 내부 테이블 메타데이터(sys.objects에서 상속되는 메타데이터 포함)를 반환합니다.

SELECT * FROM sys.internal_tables;  

C. 내부 테이블 열 및 열 데이터 형식 반환

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. 내부 테이블 인덱스 반환

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. 내부 테이블 통계 반환

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. 내부 테이블 파티션 및 할당 단위 정보 반환

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. 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. 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  

9\. 모든 Service Broker 서비스에 대한 내부 테이블 메타데이터 반환

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

참고 항목

카탈로그 뷰(Transact-SQL)
개체 카탈로그 뷰(Transact-SQL)