sys.dm_db_page_info (Transact-SQL)

S’applique à : SQL Server 2019 (15.x) Azure SQL Database Azure SQL Managed Instance

Retourne des informations sur une page de la base de données. La fonction retourne une ligne qui contient les informations d’en-tête de la page, notamment les object_id, index_id et partition_id. Cette fonction rend superflue l’utilisation de DBCC PAGE dans la plupart des cas.

Remarque

sys.dm_db_page_info est actuellement pris en charge uniquement dans SQL Server 2019 (15.x) et versions ultérieures.

Syntaxe

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

Arguments

DatabaseId | NULL | DEFAULT

ID de la base de données. DatabaseId est smallint. L’entrée autorisée est l'ID d'une base de données. La valeur par défaut est NULL, mais l’envoi d’une valeur NULL pour ce paramètre entraîne une erreur.

FileId | NULL | DEFAULT

L’ID du fichier. FileId est int. L’entrée valide est le numéro d’identification d’un fichier dans la base de données spécifiée par DatabaseId. La valeur par défaut est NULL, mais l’envoi d’une valeur NULL pour ce paramètre entraîne une erreur.

PageId | NULL | DEFAULT

L’ID de la page. PageId est int. L’entrée valide est le numéro d’identification d’une page dans le fichier spécifié par FileId. La valeur par défaut est NULL, mais l’envoi d’une valeur NULL pour ce paramètre entraîne une erreur.

Mode | NULL | DEFAULT

Détermine le niveau de détail dans la sortie de la fonction. 'LIMITED' retourne des valeurs NULL pour toutes les colonnes de description, « DETAILED » remplit les colonnes de description. DEFAULT est 'LIMITED'.

Table retournée

Nom de la colonne Type de données Description
database_id int ID de la base de données.

Dans la base de données Azure SQL, les valeurs sont uniques au sein d’une base de données unique ou d’un pool élastique, mais pas dans un serveur logique.
file_id int ID du fichier
page_id int ID page
page_header_version int Version de l’en-tête de page
page_type int Type de page
page_type_desc nvarchar(64) Description du type de page
page_type_flag_bits nvarchar(64) Type de bits d’indicateur dans l’en-tête de page
page_type_flag_bits_desc nvarchar(64) Description des bits d’indicateur de type dans l’en-tête de page
page_flag_bits nvarchar(64) Indicateurs dans l’en-tête de page
page_flag_bits_desc nvarchar (256) Description des bits d’indicateur dans l’en-tête de page
page_lsn nvarchar(64) Numéro séquentiel dans le journal / horodateur
page_level int Niveau de la page dans l’index (feuille = 0)
object_id int Identificateur de l’objet propriétaire de la page
index_id int Identificateur de l’index (0 pour les pages de données de tas)
partition_id bigint Identificateur de la partition
alloc_unit_id bigint Identificateur de l'unité d'allocation
is_encrypted bit Bit qui indique si la page est chiffrée ou non
has_checksum bit Bit qui indique si la page a ou non une valeur de somme de contrôle
somme de contrôle int Stocke la valeur de somme de contrôle utilisée pour détecter l’altération des données
is_iam_pg bit Bit qui indique si la page est une page IAM ou non
is_mixed_ext bit Bit qui indique si alloué dans une étendue mixte
has_ghost_records bit Bit qui indique si la page contient des enregistrements fantômes
Un enregistrement fantôme est un enregistrement marqué pour suppression, mais qui n’a pas encore été supprimé.
has_version_records bit Bit qui indique si la page contient des enregistrements de version utilisés pour la récupération de base de données accélérée
pfs_page_id int Identificateur de page de la page PFS correspondante
pfs_is_allocated bit Bit qui indique si la page est marquée comme allouée dans la page PFS correspondante ou non
pfs_alloc_percent int Pourcentage d’allocation comme indiqué par l’octet PFS correspondant
pfs_status nvarchar(64) Octet PFS
pfs_status_desc nvarchar(64) Description de l’octet PFS
gam_page_id int Identificateur de page de la page GAM correspondante
gam_status bit Bit qui indique si alloué dans GAM
gam_status_desc nvarchar(64) Description du bit de l’état GAM
sgam_page_id int Identificateur de page de la page SGAM correspondante
sgam_status bit Bit qui indique si alloué dans SGAM
sgam_status_desc nvarchar(64) Description du bit de l’état SGAM
diff_map_page_id int Identificateur de page de la page bitmap différentielle correspondante
diff_status bit Bit qui indique si l’état diff est modifié
diff_status_desc nvarchar(64) Description du bit de l’état diff
ml_map_page_id int Identificateur de page de la page bitmap de journalisation minimale correspondante
ml_status bit Bit qui indique si la page est journalisée minimalement
ml_status_desc nvarchar(64) Description du bit d’état de journalisation minimale
prev_page_file_id smallint Identificateur du fichier de page précédent
prev_page_page_id int Identificateur de page de la page précédente
next_page_file_id smallint Identificateur du fichier de page de la page suivant
next_page_page_id int Identificateur de page de la page suivante
fixed_length smallint Longueur des lignes de taille fixe
slot_count smallint Nombre total d’emplacements (utilisés et inutilisés)
Pour une page de données, ce nombre équivaut au nombre de lignes.
ghost_rec_count smallint Nombre d’enregistrements marqués comme fantômes sur la page
Un enregistrement fantôme est un enregistrement marqué pour suppression, mais qui n’a pas encore été supprimé.
free_bytes smallint Nombre d’octets libres sur la page
free_data_offset int Décalage de l’espace libre à la fin de la zone de données
reserved_bytes smallint Nombre d’octets libres réservés par toutes les transactions (si segment de mémoire)
Nombre de lignes fantômes (si nœud terminal d’index)
reserved_bytes_by_xdes_id smallint Espace contribué par m_xdesID à m_reservedCnt
Pour des fins de débogage uniquement
xdes_id nvarchar(64) Dernière transaction apportée par m_reserved
Pour des fins de débogage uniquement

Notes

La fonction de gestion dynamique sys.dm_db_page_info retourne des informations telles que page_id, file_id, index_id, object_id et ainsi de suite, qui sont présentes dans un en-tête de page. Ces informations sont utiles pour dépanner et déboguer différentes performances (contention de verrous et de verrous) et les problèmes d’altération.

sys.dm_db_page_info peut être utilisé à la place de l’instruction DBCC PAGE dans de nombreux cas, mais il retourne uniquement les informations d’en-tête de page, et non le corps de la page. DBCC PAGE est toujours nécessaire pour les cas d’usage où l’intégralité du contenu de la page est requise.

Utiliser conjointement avec d’autres DMV

L’un des cas d’usage importants de sys.dm_db_page_info est de le joindre à d’autres DMV qui exposent des informations de page. Pour faciliter ce cas d’usage, une nouvelle colonne appelée page_resource a été ajoutée qui expose les informations de page dans un format hexadécimal de 8 octets. Cette colonne a été ajoutée à sys.dm_exec_requests et sys.sysprocesses et est ajoutée à d’autres DMV à l’avenir si nécessaire.

Une nouvelle fonction, sys.fn_PageResCracker, prend page_resource comme entrée et génère une seule ligne qui contient database_id, file_id et page_id. Cette fonction peut ensuite être utilisée pour faciliter les jointures entre sys.dm_exec_requests ou sys.sysprocesses et sys.dm_db_page_info.

autorisations

Requiert l’autorisation VIEW DATABASE STATE sur la base de données.

Autorisations pour SQL Server 2022 (et versions plus récentes)

Requiert l'autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données.

Exemples

R. Afficher toutes les propriétés d’une page

La requête suivante retourne une ligne avec toutes les informations de page pour une combinaison donnée database_id, file_id, page_id avec le mode par défaut (« LIMITED »)

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

B. Utiliser sys.dm_db_page_info avec d’autres DMV

La requête suivante retourne une ligne par wait_resource exposé par sys.dm_exec_requests lorsque la ligne contient une valeur page_resource non-null

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;

Voir aussi