Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server
Возвращает одну строку для каждого объекта какой-либо внутренней таблицы. Внутренние таблицы автоматически создаются SQL Server для поддержки различных функций. Например, при создании первичного XML-индекса SQL Server автоматически создает внутреннюю таблицу для сохранения измельченных данных XML-документа. Внутренние таблицы отображаются в sys
схеме каждой базы данных и имеют уникальные, системные имена, указывающие их функцию, например xml_index_nodes_2021582240_32001
или queue_messages_1977058079
.
Имя столбца | Тип данных | Описание |
---|---|---|
Столбцы, унаследованные от sys.objects |
Список столбцов, наследуемых этим представлением, см. в разделе sys.objects. | |
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 204 = FULLTEXT_INDEX_MAP 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_INDEX_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 | Идентификатор родительского объекта независимо от того, является ли он областью действия схемы. В противном случае, 0 если нет родительского элемента.queue_messages
=
object_id очередьxml_index_nodes
=
object_id XML-индекс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 | Вспомогательный идентификатор родителя.xml_index_nodes
=
index_id XML-индексextended_indexes
=
index_id расширенный индекс, например пространственный индекс0
=
queue_messages , fulltext_catalog_freelist , fulltext_index_map query_notification service_broker_map илиchange_tracking |
lob_data_space_id |
int | Ненулевое значение — идентификатор пространства данных (файловая группа или схема секционирования), хранящего данные больших объектов (LOB) для этой таблицы. |
filestream_data_space_id |
int | Зарезервировано для последующего использования. |
Внутренние таблицы не содержат данных, доступных для пользователей, и их схема исправлена и неизменяема. Имена внутренних таблиц нельзя ссылаться на Transact-SQL операторах. Например, нельзя выполнить инструкцию, например SELECT * FROM <sys.internal_table_name>
. Однако можно обращаться с запросами к представлениям каталогов для просмотра метаданных внутренних таблиц.
Разрешения
Видимость метаданных в представлениях каталога ограничена защищаемыми объектами, которыми владеет пользователь или которым пользователь получил некоторое разрешение. Дополнительные сведения см. в разделе Metadata Visibility Configuration.
Замечания
Внутренние таблицы размещаются в той же файловой группе, что и родительская сущность. Запрос каталога, показанный в примере F , можно использовать для возврата количества внутренних таблиц страниц, используемых для данных в строке, вне строк и больших объектов (LOB).
Для возврата данных об использовании пространства для внутренних таблиц можно использовать системную процедуру sp_spaceused .
sp_spaceused
сообщает внутреннее табличное пространство следующим образом:
При указании имени запроса базовая внутренняя таблица, связанная с запросом, находится по ссылке и сообщается объем пространства, занятого ей.
Страницы, используемые внутренними таблицами XML-индексов, пространственных индексов и полнотекстовых индексов, включаются в
index_size
столбец. При указании имени таблицы или индексированного представления страницы xml-индексов, пространственных индексов и полнотекстовых индексов для этого объекта включаются в столбцыreserved
иindex_size
.
Примеры
Следующие примеры демонстрируют, как обратиться с запросом к метаданным внутренней таблицы с помощью представлений каталога.
А. Показывает внутренние таблицы, наследующие столбцы от представления каталога sys.objects
SELECT * FROM sys.objects WHERE type = 'IT';
В. Возвращает все метаданные внутренней таблицы (в том числе те, которые наследуются от представления каталога sys.objects)
SELECT * FROM sys.internal_tables;
В. Возвращает столбцы и типы данных столбцов внутренней таблицы
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
INNER JOIN sys.columns AS col
ON itab.object_id = col.object_id
INNER JOIN sys.types AS typ
ON typ.user_type_id = col.user_type_id
ORDER BY itab.name, col.column_id;
Д. Возвращает индексы внутренней таблицы
SELECT SCHEMA_NAME(itab.schema_id) AS schema_name,
itab.name AS internal_table_name,
idx.*
FROM sys.internal_tables AS itab
INNER JOIN sys.indexes AS idx
ON itab.object_id = idx.object_id
ORDER BY itab.name, idx.index_id;
Е. Возвращает статистику внутренней таблицы
SELECT SCHEMA_NAME(itab.schema_id) AS schema_name,
itab.name AS internal_table_name,
s.*
FROM sys.internal_tables AS itab
INNER 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
INNER 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)
INNER JOIN sys.partitions AS p
ON p.object_id = idx.object_id
AND p.index_id = idx.index_id
INNER 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
INNER JOIN sys.tables AS t
ON it.parent_id = t.object_id
INNER 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
INNER JOIN sys.service_queues AS q
ON it.parent_id = q.object_id
WHERE it.internal_type_desc = 'QUEUE_MESSAGES';
GO
И. Возвращает метаданные внутренней таблицы для всех служб компонента Service Broker
SELECT * FROM tempdb.sys.internal_tables
WHERE internal_type_desc = 'SERVICE_BROKER_MAP';
GO