sys.internal_tables (Transact-SQL)

適用対象:SQL Server (サポートされているすべてのバージョン)

内部テーブルであるオブジェクトごとに 1 行を返します。 内部テーブルは、さまざまな機能をサポートするために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。

= queue_messagesキューのobject_id

= xml_index_nodesxml インデックスのobject_id

= fulltext_catalog_freelistフルテキスト カタログのfulltext_catalog_id

= fulltext_index_mapフルテキスト インデックスのobject_id

query_notification、または service_broker_map = 0

= extended_indexes空間インデックスなどの拡張インデックスのobject_id

テーブル追跡が有効になっているテーブルのobject_id = change_tracking
parent_minor_id int 親のマイナー ID。

= xml_index_nodesXML インデックスのindex_id

= extended_indexes空間インデックスなどの拡張インデックスのindex_id

0 = queue_messagesfulltext_catalog_freelistfulltext_index_mapquery_notificationservice_broker_map、または change_tracking
lob_data_space_id int ゼロ以外の値は、このテーブルのラージ オブジェクト (LOB) データを保持するデータ空間 (ファイル グループまたはパーティション スキーム) の ID です。
filestream_data_space_id int 将来利用するために予約されています。

アクセス許可

カタログ ビューでのメタデータの表示が、ユーザーが所有しているかそのユーザーが権限を許可されている、セキュリティ保護可能なメタデータに制限されます。 詳細については、「 Metadata Visibility Configuration」を参照してください。

注釈

内部テーブルは、親エンティティと同じファイル グループに配置されます。 後半の例 F で示すカタログ クエリを使用して、内部テーブルが行内データ、行外データ、およびラージ オブジェクト (LOB) データに使用するページ数を返すことができます。

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  

I. すべての Service Broker サービスに関する内部テーブルのメタデータを返す

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

関連項目

カタログ ビュー (Transact-SQL)
オブジェクト カタログ ビュー (Transact-SQL)