sys.dm_db_page_info (Transact-SQL)

Gäller för: SQL Server 2019 (15.x) och senare versioner Azure SQL DatabaseAzure SQL Managed InstanceSQL Database i Microsoft Fabric

Returnerar information om en sida i en databas. Funktionen returnerar en rad som innehåller rubrikinformationen från sidan, inklusive object_id, index_idoch partition_id. Den här funktionen ersätter behovet av att använda DBCC PAGE i de flesta fall.

Anmärkning

sys.dm_db_page_info stöds för närvarande endast i SQL Server 2019 (15.x) och senare.

Syntax

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

Arguments

DatabaseId | NULL | DEFAULTVÄRDE

Databasens ID. DatabaseId är smallint. Giltiga indata är ID-numret för en databas. Standardvärdet är NULL, men att skicka ett NULL-värde för den här parametern resulterar i ett fel.

FileId | NULL | DEFAULT

ID:t för filen. FileId är int. Giltiga indata är ID-numret för en fil i databasen som anges av DatabaseId. Standardvärdet är NULL, men att skicka ett NULL-värde för den här parametern resulterar i ett fel.

PageId | NULL | DEFAULT

Sidans ID. PageId är int. Giltiga indata är ID-numret för en sida i filen som anges av FileId. Standardvärdet är NULL, men att skicka ett NULL-värde för den här parametern resulterar i ett fel.

Läge | NULL | DEFAULT

Avgör detaljnivån i funktionens utdata. 'LIMITED' returnerar NULL-värden för alla beskrivningskolumner, "DETAILED" fyller i beskrivningskolumner. DEFAULT är 'LIMITED'.

Tabellen returneras

Kolumnnamn Datatyp Description
database_id int Databas-ID.

I Azure SQL Database är värdena unika i en enskild databas eller en elastisk pool, men inte inom en logisk server.
file_id int Fil-ID
page_id int Sid-ID
page_header_version int Sidhuvudversion
sidtyp int Sidtyp
sidtypbeskrivning nvarchar(64) Beskrivning av sidtypen
page_type_flag_bits nvarchar(64) Skriv flaggbitar i sidhuvudet
page_type_flag_bits_desc nvarchar(64) Ange beskrivning av flaggbitar i sidhuvud
page_flag_bits nvarchar(64) Flaggbitar i sidhuvud
page_flag_bits_desc nvarchar(256) Beskrivning av flaggbitar i sidhuvud
page_lsn nvarchar(64) Loggsekvensnummer/tidsstämpel
sidnivå int Sidans nivå i index (löv = 0)
object_id int ID för objektet som äger sidan
index_id int ID för indexet (0 för högdatablad)
partition_id bigint ID för partitionen
alloc_enhets_id bigint ID för allokeringsenheten
är_krypterad bit Bit för att ange om sidan är krypterad eller inte
har_kontrollsumma bit Bit för att ange om sidan har ett kontrollsummavärde eller inte
kontrollsumma int Lagrar kontrollsummavärdet som används för att identifiera skadade data
is_iam_pg bit Bit för att ange om sidan är en IAM-sida eller inte
is_mixed_ext bit Bit som anger om den allokeras i blandad omfattning
has_ghost_records bit Bit som indikerar om sidan innehåller spökposter
En spökpost är en post som har markerats för borttagning men som ännu inte har tagits bort.
har_versionsposter bit Bit för att ange om sidan innehåller versionsposter som används för accelererad databasåterställning
pfs_page_id int Sid-ID för motsvarande PFS-sida
pfs_is_allocated bit Bit för att ange om sidan är markerad som allokerad på motsvarande PFS-sida
pfs_alloc_percent int Allokeringsprocent enligt motsvarande PFS-byte
pfs_status nvarchar(64) PFS-byte
pfs_status_beskrivning nvarchar(64) Beskrivning av PFS-bytet
gam_page_id int Sid-ID för motsvarande GAM-sida
gam_status bit Bit som anger om allokeras i GAM
spelstatus_beskrivning nvarchar(64) Beskrivning av GAM-statusbiten
sgam_page_id int Sid-ID för motsvarande SGAM-sida
sgam_status bit Bit som anger om det är allokerat i SGAM
sgam_status_desc nvarchar(64) Beskrivning av SGAM-statusbiten
diff_map_page_id int Sid-ID för motsvarande differentiella bitmappssida
diff_status bit Bit för att ange om diff-status har ändrats
diff_status_desc nvarchar(64) Beskrivning av diff-statusbiten
ml_map_page_id int Sid-ID för motsvarande bitmappssida för minimal loggning
ml_status bit Bit för att ange om sidan är minimalt loggad
ml_status_desc nvarchar(64) Beskrivning av den minimala loggningsstatusbiten
prev_page_file_id smallint Fil-ID för föregående sida
prev_page_page_id int Sid-ID för föregående sida
Nästa_sida_fil_id smallint Fil-ID för nästa sida
next_page_page_id int Sid-ID för nästa sida
fixed_length smallint Längden på rader med fast storlek
slotantal smallint Totalt antal platser (används och används inte)
För en datasida motsvarar det här talet antalet rader.
ghost_rec_count smallint Antal poster som markerats som spöken på sidan
En spökpost är en post som har markerats för borttagning men som ännu inte har tagits bort.
free_bytes smallint Antal lediga byte på sidan
free_data_offset int Förskjutning av ledigt utrymme i slutet av dataområdet
reserved_bytes smallint Antal fria byte reserverade av samtliga transaktioner (om heap)
Antal spökrader (om indexblad)
reserved_bytes_by_xdes_id smallint Utrymme tilldelat av m_xdesID till m_reservedCnt
Endast i felsökningssyfte
xdes_id nvarchar(64) Den senaste transaktionen som har bidragits av m_reserved
Endast i felsökningssyfte

Anmärkningar

Funktionen sys.dm_db_page_info för dynamisk hantering returnerar information som page_id, file_id, index_id, object_idoch så vidare, som finns i ett sidhuvud. Den här informationen är användbar för att felsöka och hantera olika prestandaproblem (låskonflikter och spärrkonkurrens) samt korruptionsproblem.

sys.dm_db_page_info kan användas i stället för -instruktionen DBCC PAGE i många fall, men den returnerar endast sidhuvudinformationen, inte sidans brödtext. DBCC PAGE behövs fortfarande för användningsfall där hela innehållet på sidan krävs.

Använd tillsammans med andra DMV:er

Ett av de viktiga användningsfallen med sys.dm_db_page_info är att kombinera det med andra DMV:er som exponerar sidinformation. För att underlätta det här användningsfallet har en ny kolumn med namnet page_resource lagts till som visar sidinformation i ett hexadecimalt format med 8 byte. Den här kolumnen har lagts till i sys.dm_exec_requests och sys.sysprocesses och kommer att läggas till i andra DMV:er i framtiden efter behov.

En ny funktion, sys.fn_PageResCracker, tar page_resource som indata och matar ut en enskild rad som innehåller database_id, file_id och page_id. Den här funktionen kan sedan användas för att underlätta kopplingar mellan sys.dm_exec_requests eller sys.sysprocesses och sys.dm_db_page_info.

Permissions

Kräver behörigheten VIEW DATABASE STATE i databasen.

Behörigheter för SQL Server 2022 och senare

Kräver behörigheten VISA DATABASPRESTANDATILLSTÅND för databasen.

Examples

A. Visa alla egenskaper för en sida

Följande fråga returnerar en rad med all sidinformation för en given database_id, file_id, page_id kombination med standardläge ('LIMITED')

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

B. Använd sys.dm_db_page_info med andra DMV:er

Följande fråga returnerar en rad per wait_resource exponerad av sys.dm_exec_requests när raden innehåller en icke-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;

Se även