sys.dm_db_page_info (Transact-SQL)

Применимо к: SQL Server 2019 (15.x) и более поздние версии База данных Azure SQLУправляемый экземпляр Azure SQLБаза данных SQL в Microsoft Fabric

Возвращает сведения о странице в базе данных. Функция возвращает одну строку, содержащую сведения о заголовке со страницы, включая object_id, index_idи partition_id. В большинстве случаев эта функция заменяет потребность в использовании DBCC PAGE.

Note

sys.dm_db_page_info в настоящее время поддерживается только в SQL Server 2019 (15.x) и более поздних версиях.

Syntax

sys.dm_db_page_info ( DatabaseId , FileId , PageId , Mode )

Аргументы

DatabaseId | NULL | DEFAULT

Идентификатор базы данных. DatabaseId — smallint. Допустимые входные данные — это идентификатор базы данных. Значение по умолчанию равно NULL, однако отправка значения NULL для этого параметра приведет к ошибке.

FileId | NULL | DEFAULT

Идентификатор файла. FileId является int. Допустимые входные данные — это идентификатор файла в базе данных, указанной DatabaseId. Значение по умолчанию равно NULL, однако отправка значения NULL для этого параметра приведет к ошибке.

PageId | NULL | DEFAULT

Идентификатор страницы. PageId является int. Допустимые входные данные — это идентификатор страницы в файле, указанном FileId. Значение по умолчанию равно NULL, однако отправка значения NULL для этого параметра приведет к ошибке.

Режим | NULL | DEFAULT

Определяет уровень детализации выходных данных функции. 'LIMITED' возвращает значения NULL для всех столбцов описания, "DETAILED" заполняет столбцы описания. DEFAULT равно 'LIMITED'.

Таблица возвращена

Название столбца Тип данных Описание
идентификатор_базы_данных int Идентификатор базы данных.

В База данных SQL Azure значения уникальны в одной базе данных или эластичном пуле, но не в логическом сервере.
идентификатор_файла int Идентификатор файла
page_id int ИД страницы
page_header_version int Версия заголовка страницы
page_type int Тип страницы
page_type_desc nvarchar(64) Описание типа страницы
page_type_flag_bits nvarchar(64) Биты флага типа в заголовке страницы
page_type_flag_bits_desc nvarchar(64) Описание битов флага типа в заголовке страницы
page_flag_bits nvarchar(64) Пометка битов в заголовке страницы
page_flag_bits_desc nvarchar(256) Описание битов флага в заголовке страницы
page_lsn nvarchar(64) Номер последовательности журнала / метка времени
page_level int Уровень страницы в индексе (лист = 0)
object_id int Идентификатор объекта, владельцем страницы
index_id int Идентификатор индекса (0 для страниц данных кучи)
partition_id bigint Идентификатор секции
alloc_unit_id bigint Идентификатор единицы выделения
is_encrypted bit Бит, указывающий, зашифрована ли страница
has_checksum bit Бит, указывающий, имеет ли страница значение контрольной суммы
контрольная сумма int Сохраняет значение контрольной суммы, используемое для обнаружения повреждения данных
is_iam_pg bit Бит, чтобы указать, является ли страница IAM-страницей
is_mixed_ext bit Бит, указывающий, выделяется ли в смешанной степени
has_ghost_records bit Бит, чтобы указать, содержит ли страница записи призраков
Фантомная запись — это запись, которая была помечена для удаления, но еще не удалена.
has_version_records bit Бит, указывающий, содержит ли страница записи версий, используемые для ускорения восстановления базы данных
pfs_page_id int Идентификатор страницы соответствующей страницы PFS
pfs_is_allocated bit Бит, чтобы указать, помечена ли страница как выделенная на соответствующей странице PFS
pfs_alloc_percent int Процент выделения, как указано соответствующим байтом PFS
pfs_status nvarchar(64) байт PFS
pfs_status_desc nvarchar(64) Описание байта PFS
gam_page_id int Идентификатор страницы соответствующей страницы GAM
gam_status bit Бит, указывающий, выделено ли в GAM
gam_status_desc nvarchar(64) Описание бита состояния GAM
sgam_page_id int Идентификатор страницы соответствующей страницы SGAM
sgam_status bit Бит, указывающий, выделяется ли SGAM
sgam_status_desc nvarchar(64) Описание бита состояния SGAM
diff_map_page_id int Идентификатор страницы соответствующей разностной растровой страницы
diff_status bit Бит, указывающий, изменяется ли состояние диффа
diff_status_desc nvarchar(64) Описание бита состояния диффа
ml_map_page_id int Идентификатор страницы соответствующей минимальной растровой страницы ведения журнала
ml_status bit Бит, указывающий, является ли страница минимально зарегистрированной
ml_status_desc nvarchar(64) Описание минимального бита состояния ведения журнала
prev_page_file_id smallint Предыдущий идентификатор файла страницы
prev_page_page_id int Идентификатор страницы предыдущей страницы
next_page_file_id smallint Следующий идентификатор файла страницы
next_page_page_id int Идентификатор страницы следующей страницы
fixed_length smallint Длина строк фиксированного размера
slot_count smallint Общее количество слотов (используемых и неиспользуемых)
Для страницы данных это число эквивалентно количеству строк.
ghost_rec_count smallint Количество записей, помеченных как призрак на странице
Фантомная запись — это запись, которая была помечена для удаления, но еще не удалена.
free_bytes smallint Количество бесплатных байтов на странице
free_data_offset int Смещение свободного места в конце области данных
reserved_bytes smallint Количество свободных байтов, зарезервированных всеми транзакциями (если куча)
Число фантомных строк (если конечный индекс)
reserved_bytes_by_xdes_id smallint Пространство, внесенное m_xdesID для m_reservedCnt
Только для отладки
xdes_id nvarchar(64) Последняя транзакция, внесенная m_reserved
Только для отладки

Замечания

Функция sys.dm_db_page_info динамического управления возвращает такие сведения, как page_id, file_id, index_idobject_idи т. д., которые присутствуют в заголовке страницы. Эта информация полезна для устранения неполадок и отладки различных проблем с производительностью (блокировкой и блокировкой) и повреждениями.

sys.dm_db_page_info можно использовать вместо инструкции DBCC PAGE во многих случаях, но она возвращает только сведения о заголовке страницы, а не текст страницы. DBCC PAGE по-прежнему требуется для вариантов использования, когда требуется все содержимое страницы.

Использование в сочетании с другими динамическими представлениями

Одним из важных вариантов sys.dm_db_page_info использования является присоединение к нему с другими динамическими представлениями, предоставляющими сведения о странице. Чтобы упростить этот вариант использования, добавлен новый столбец page_resource , который предоставляет сведения о странице в шестнадцатеричном формате 8-байтов. Этот столбец добавлен sys.dm_exec_requests и sys.sysprocesses будет добавлен в другие динамические административные представления в будущем.

Новая функция sys.fn_PageResCrackerпринимает в качестве входных данных и выводит одну строку, содержащую page_resourcedatabase_id , и file_idpage_id . Затем эту функцию можно использовать для упрощения соединений между sys.dm_exec_requests или sys.sysprocesses и sys.dm_db_page_info.

Permissions

Требуется VIEW DATABASE STATE разрешение в базе данных.

Разрешения для SQL Server 2022 и более поздних версий

Требуется VIEWDATABASE разрешение PERFORMANCE STATE в базе данных.

Examples

А. Отображение всех свойств страницы

Следующий запрос возвращает одну строку со всеми сведениями о странице для заданного database_id, file_idpage_id сочетания с режимом по умолчанию ('LIMITED')

SELECT *
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT);

B. Использование sys.dm_db_page_info с другими динамическими представлениями

Следующий запрос возвращает одну строку на wait_resource предоставленную sys.dm_exec_requests , если строка содержит ненулевое значение page_resource

SELECT page_info.*
FROM sys.dm_exec_requests AS d
CROSS APPLY sys.fn_PageResCracker(d.page_resource) AS r
CROSS APPLY sys.dm_db_page_info(r.db_id, r.file_id, r.page_id, 'LIMITED') AS page_info;