Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: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_HINTS4 = QUERY_DISK_STORE_QUERY_TEMPLATE_PARAMETERIZATION6 = QUERY_DISK_STORE_WAIT_STATS201 = QUEUE_MESSAGES202 = XML_INDEX_NODES203 = FULLTEXT_CATALOG_FREELIST204 = FULLTEXT_INDEX_MAP205 = QUERY_NOTIFICATION206 = SERVICE_BROKER_MAP207 = EXTENDED_INDEXES (например, пространственный индекс)208 = FILESTREAM_TOMBSTONE209 = CHANGE_TRACKING210 = TRACKED_COMMITTED_TRANSACTIONS220 = CONTAINED_FEATURES225 = FILETABLE_UPDATES236 = SELECTIVE_XML_INDEX_NODE_TABLE240 = QUERY_DISK_STORE_QUERY_TEXT241 = QUERY_DISK_STORE_QUERY242 = QUERY_DISK_STORE_PLAN243 = QUERY_DISK_STORE_RUNTIME_STATS244 = QUERY_DISK_STORE_RUNTIME_STATS_INTERVAL245 = QUERY_CONTEXT_SETTINGS |
internal_type_desc |
nvarchar(60) | Описание типа внутренней таблицы:QUERY_DISK_STORE_QUERY_HINTSQUERY_DISK_STORE_QUERY_TEMPLATE_PARAMETERIZATIONQUERY_DISK_STORE_WAIT_STATSQUEUE_MESSAGESXML_INDEX_NODESFULLTEXT_CATALOG_FREELISTFULLTEXT_INDEX_MAPQUERY_NOTIFICATIONSERVICE_BROKER_MAPEXTENDED_INDEXESFILESTREAM_TOMBSTONECHANGE_TRACKINGTRACKED_COMMITTED_TRANSACTIONSCONTAINED_FEATURESFILETABLE_UPDATESSELECTIVE_XML_INDEX_NODE_TABLEQUERY_DISK_STORE_QUERY_TEXTQUERY_DISK_STORE_QUERYQUERY_DISK_STORE_PLANQUERY_DISK_STORE_RUNTIME_STATSQUERY_DISK_STORE_RUNTIME_STATS_INTERVALQUERY_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 = 0extended_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_mapquery_notificationservice_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