Delen via


sys.dm_db_page_info (Transact-SQL)

Van toepassing op: SQL Server 2019 (15.x) en latere versies Van Azure SQL DatabaseAzure SQL Managed InstanceSQL Database in Microsoft Fabric

Retourneert informatie over een pagina in een database. De functie retourneert één rij die de koptekstinformatie van de pagina bevat, inclusief de object_id, index_iden partition_id. Deze functie vervangt de noodzaak om in de meeste gevallen te gebruiken DBCC PAGE .

Opmerking

sys.dm_db_page_info wordt momenteel alleen ondersteund in SQL Server 2019 (15.x) en hoger.

Syntaxis

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

Arguments

DatabaseId | NULL | VERSTEK

De id van de database. DatabaseId is smallint. Geldige invoer is het id-nummer van een database. De standaardwaarde is NULL, maar het verzenden van een NULL-waarde voor deze parameter resulteert in een fout.

FileId | NULL | VERSTEK

De id van het bestand. FileId is int. Geldige invoer is het id-nummer van een bestand in de database die is opgegeven door DatabaseId. De standaardwaarde is NULL, maar het verzenden van een NULL-waarde voor deze parameter resulteert in een fout.

PageId | NULL | DEFAULT

De id van de pagina. PageId is int. Geldige invoer is het id-nummer van een pagina in het bestand dat is opgegeven door FileId. De standaardwaarde is NULL, maar het verzenden van een NULL-waarde voor deze parameter resulteert in een fout.

Modus | NULL | VERSTEK

Bepaalt het detailniveau in de uitvoer van de functie. 'LIMITED' retourneert NULL-waarden voor alle beschrijvingskolommen, 'GEDETAILLEERD' vult beschrijvingskolommen. DEFAULT is 'LIMITED'.

Tabel geretourneerd

Kolomnaam Gegevenstype Description
database_id int Database-id.

In Azure SQL Database zijn de waarden uniek binnen één database of een elastische pool, maar niet binnen een logische server.
file_id int Bestands-id
page_id int Pagina-id
pagina_koptekst_versie int Versie van paginakoptekst
page_type int Paginatype
page_type_desc nvarchar(64) Beschrijving van het paginatype
page_type_flag_bits nvarchar(64) Vlag-bits in paginakoptekst typen
page_type_flag_bits_beschrijving nvarchar(64) Beschrijving van vlag-bits typen in paginakoptekst
page_flag_bits nvarchar(64) Bits markeren in paginakoptekst
pagina_vlag_bits_beschrijving nvarchar(256) Beschrijving van vlag-bits in paginakoptekst
page_lsn nvarchar(64) Logboekreeksnummer/tijdstempel
paginaniveau int Niveau van de pagina in index (leaf = 0)
object_id int Id van het object dat eigenaar is van de pagina
index_id int Id van de index (0 voor heap-gegevenspagina's)
partition_id bigint Id van de partitie
alloc_unit_id bigint Id van de toewijzingseenheid
is_encrypted bit Bit om aan te geven of de pagina al dan niet is versleuteld
has_checksum bit Bit om aan te geven of de pagina een controlesomwaarde heeft
checksum int Slaat de controlesomwaarde op die wordt gebruikt om beschadiging van gegevens te detecteren
is_iam_pg bit Bit om aan te geven of de pagina een IAM-pagina is
is_mixed_ext bit Bit om aan te geven of deze in een gemengde mate is toegewezen
has_ghost_records bit Bit om aan te geven of de pagina spookrecords bevat
Een spookrecord is een record dat is gemarkeerd voor verwijdering, maar nog moet worden weggehaald.
has_version_records bit Bit om aan te geven of de pagina versierecords bevat die worden gebruikt voor versneld databaseherstel
pfs_page_id int Pagina-id van overeenkomende PFS-pagina
pfs_is_allocated bit Bit om aan te geven of de pagina is gemarkeerd als toegewezen op de bijbehorende PFS-pagina
pfs_alloc_percent int Toewijzingspercentage zoals aangegeven door de bijbehorende PFS-byte
pfs_status nvarchar(64) PFS-byte
pfs_status_desc (statusbeschrijving) nvarchar(64) Beschrijving van de PFS-byte
gam_page_id int Pagina-id van de bijbehorende GAM-pagina
gam_status bit Bit om aan te geven of het in GAM wordt toegewezen
gam_status_beschrijving nvarchar(64) Beschrijving van de GAM-status-bit
sgam_page_id int Pagina-id van de bijbehorende SGAM-pagina
sgam_status bit Bit om aan te geven of het is toegewezen in SGAM
sgam_status_desc nvarchar(64) Beschrijving van de SGAM-statusbit
diff_map_page_id int Pagina-id van de bijbehorende differentiële bitmappagina
statusverschil bit Bit om aan te geven of de diff-status is gewijzigd
diff_status_desc nvarchar(64) Beschrijving van de diff-statusbit
ml_map_page_id int Pagina-id van de bijbehorende bitmappagina voor minimale logboekregistratie
ml_status bit Bit om aan te geven of de pagina minimaal gelogd is
ml_status_desc nvarchar(64) Beschrijving van de minimale logstatusbit
prev_page_file_id smallint ID van vorig paginabestand
prev_page_page_id int Pagina-id vorige pagina
next_page_file_id smallint Bestands-id van volgende pagina
volgende_pagina_pagina_id int Volgende pagina, pagina-ID
fixed_length smallint Lengte van rijen met vaste grootte
aantal_sleuven smallint Totaal aantal slots (gebruikt en ongebruikt)
Voor een gegevenspagina is dit getal gelijk aan het aantal rijen.
ghost_rec_count smallint Aantal records gemarkeerd als ghost op de pagina
Een spookrecord is een record dat is gemarkeerd voor verwijdering, maar nog moet worden weggehaald.
free_bytes smallint Aantal beschikbare bytes op de pagina
free_data_offset int Verschuiving van vrije ruimte aan het einde van het gegevensgebied
reserved_bytes smallint Aantal beschikbare bytes gereserveerd door alle transacties (indien van toepassing op heap)
Aantal vervaagde rijen (als bladnode in index)
reserved_bytes_by_xdes_id smallint Ruimte bijgedragen door m_xdesID aan m_reservedCnt
Alleen voor foutopsporingsdoeleinden
xdes_id nvarchar(64) Meest recente transactie bijgedragen door m_reserved
Alleen voor foutopsporingsdoeleinden

Opmerkingen

De dynamische beheerfunctie sys.dm_db_page_info retourneert informatie zoals page_id, file_id, index_id, object_id enzovoort, die aanwezig is in een paginakoptekst. Deze informatie is handig voor het oplossen en debuggen van verschillende prestatie- (slot- en latch-conflicten) en corruptiekwesties.

sys.dm_db_page_info kan in veel gevallen worden gebruikt in plaats van de DBCC PAGE instructie, maar retourneert alleen de informatie over de paginakoptekst, niet de hoofdtekst van de pagina. DBCC PAGE is nog steeds nodig voor gebruiksvoorbeelden waarbij de volledige inhoud van de pagina vereist is.

Gebruiken in combinatie met andere DMV's

Een van de belangrijke use cases sys.dm_db_page_info is om deze te koppelen aan andere DMV's die paginagegevens beschikbaar maken. Ter ondersteuning van deze use case is een nieuwe kolom page_resource toegevoegd die paginagegevens in een hexadecimale indeling van 8 bytes weergeeft. Deze kolom is toegevoegd aan sys.dm_exec_requests en sys.sysprocesses en zal indien nodig in de toekomst worden toegevoegd aan andere DMV's.

Een nieuwe functie, sys.fn_PageResCracker, neemt de page_resource als invoer en geeft één rij met database_id, file_id en page_id als uitvoer. Deze functie kan vervolgens worden gebruikt om koppelingen tussen sys.dm_exec_requests of sys.sysprocesses en sys.dm_db_page_info te vergemakkelijken.

Permissions

Hiervoor is de VIEW DATABASE STATE machtiging in de database vereist.

Machtigingen voor SQL Server 2022 en hoger

Hiervoor is de machtiging VIEW DATABASE PERFORMANCE STATE vereist voor de database.

Voorbeelden

Eén. Alle eigenschappen van een pagina weergeven

De volgende query retourneert één rij met alle paginagegevens voor een bepaalde database_id, file_idcombinatie page_id met de standaardmodus ('BEPERKT')

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

B. Sys.dm_db_page_info gebruiken met andere DMVs

De volgende query retourneert één rij per wait_resource dat door sys.dm_exec_requests wordt blootgesteld wanneer de rij een niet-null-waarde van page_resource bevat.

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;

Zie ook