sys.dm_db_page_info (Transact-SQL)

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

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

Note

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 | PAR DÉFAUT

ID de la base de données. DatabaseId est smallint. L’entrée valide est le numéro d’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 | PAR DÉFAUT

ID du fichier. FileId est int. L’entrée valide est le numéro d’ID 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 | PAR DÉFAUT

ID de la page. PageId est int. L’entrée valide est le numéro d’ID 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 | PAR DÉFAUT

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 a la valeur 'LIMITED'.

Table retournée

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

Dans Azure SQL Database, 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 de séquence de journal / horodatage
page_level int Niveau de la page dans l’index (feuille = 0)
object_id int ID de l’objet propriétaire de la page
index_id int ID de l’index (0 pour les pages de données de tas)
partition_id bigint ID de la partition
alloc_unit_id bigint ID de l’unité d’allocation
is_encrypted bit Bit pour indiquer si la page est chiffrée ou non
has_checksum bit Bit pour indiquer 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 pour indiquer si la page est ou non une page IAM
is_mixed_ext bit Bit pour indiquer si alloué dans une étendue mixte
has_ghost_records bit Bit pour indiquer 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 pour indiquer si la page contient des enregistrements de version utilisés pour la récupération accélérée de la base de données
pfs_page_id int ID de page de la page PFS correspondante
pfs_is_allocated bit Bit pour indiquer 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 ID de page de la page GAM correspondante
gam_status bit Bit pour indiquer si alloué dans GAM
gam_status_desc nvarchar(64) Description du bit d’état GAM
sgam_page_id int ID de page de la page SGAM correspondante
sgam_status bit Bit pour indiquer si alloué dans SGAM
sgam_status_desc nvarchar(64) Description du bit d’état SGAM
diff_map_page_id int ID de page de la page bitmap différentielle correspondante
diff_status bit Bit pour indiquer si l’état des différences est modifié
diff_status_desc nvarchar(64) Description du bit d’état de différences
ml_map_page_id int ID de page de la page bitmap de journalisation minimale correspondante
ml_status bit Bit pour indiquer si la page est journalisée minimalement
ml_status_desc nvarchar(64) Description du bit d’état de journalisation minimal
prev_page_file_id smallint ID du fichier de page précédent
prev_page_page_id int ID de page précédente
next_page_file_id smallint ID du fichier de page suivant
next_page_page_id int ID de 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 gratuits 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 le tas)
Nombre de lignes fantômes (si feuille d’index)
reserved_bytes_by_xdes_id smallint Espace contribué par m_xdesID à m_reservedCnt
À des fins de débogage uniquement
xdes_id nvarchar(64) Dernière transaction apportée par m_reserved
À des fins de débogage uniquement

Remarques

La sys.dm_db_page_info fonction de gestion dynamique retourne des informations telles que page_id, , file_idindex_id, object_id, etc. qui sont présentes dans un en-tête de page. Ces informations sont utiles pour résoudre les problèmes de résolution et de débogage de 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 sera 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 est sys.dm_db_page_info 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 sera ajoutée à d’autres DMV à l’avenir si nécessaire.

Une nouvelle fonction, prend sys.fn_PageResCrackerl’entrée page_resource 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

Nécessite l’autorisation VIEW DATABASE STATE dans la base de données.

Autorisations pour SQL Server 2022 et versions ultérieures

Nécessite l’autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données.

Examples

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

La requête suivante retourne une ligne avec toutes les informations de page pour un , database_idfile_idpage_id combinaison 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é sys.dm_exec_requests lorsque la ligne contient une valeur non Null 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;

Voir aussi