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_id
et 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_id
index_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_PageResCracker
l’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_id
file_id
page_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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : pendant toute l’année 2024, nous allons éliminer progressivement Problèmes GitHub comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, voir :Soumettre et afficher des commentaires pour