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'
.
Таблица возвращенной информации
Имя столбца | Тип данных | Description |
---|---|---|
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_id
index_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_id
file_id
, и page_id
page_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_id
page_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;