Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к: SQL Server 2019 (15.x) и более поздних версий
базы данных SQL
Azure Для Управляемого экземпляра
SQL Azure в Microsoft Fabric
Возвращает сведения о странице в базе данных. Функция возвращает одну строку, содержащую сведения о заголовке со страницы, включая 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, 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.
Разрешения
Требуется 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;