Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
S’applique à : SQL Server 2019 (15.x) et versions
ultérieures d’Azure SQL Database Azure SQL
Managed Instance
SQL database dans Microsoft Fabric
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 | VALEUR PAR DÉFAUT
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 | PAR DÉFAUT
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 | 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 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 |
| checksum | 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;