다음을 통해 공유


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)