sys.dm_db_page_info (Transact-SQL)

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

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

Заметка

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

Синтаксис

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

Аргументы

DatabaseId | NULL | ПО УМОЛЧАНИЮ

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

FileId | NULL | ПО УМОЛЧАНИЮ

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

PageId | NULL | ПО УМОЛЧАНИЮ

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

Режим | NULL | ПО УМОЛЧАНИЮ

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

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

Имя столбца Тип данных Описание:
database_id int Идентификатор базы данных.

В Базе данных SQL Azure значения уникальны в пределах одной базы данных или эластичного пула, но не в логическом сервере.
file_id 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, object_idindex_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принимает в качестве входных данных и выводит одну строку, содержащую database_idfile_id , и page_idpage_resource . Затем эту функцию можно использовать для упрощения соединений между sys.dm_exec_requests или sys.sysprocesses и sys.dm_db_page_info.

Разрешения

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

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

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

Примеры

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

Следующий запрос возвращает одну строку со всеми сведениями о странице для заданного 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;

См. также