sys.dm_db_page_info (Transact-SQL)
Gilt für: SQL Server 2019 (15.x) Azure SQL-Datenbank Azure SQL Managed Instance
Gibt Informationen zu einer Seite in einer Datenbank zurück. Die Funktion gibt eine Zeile zurück, die die Headerinformationen der Seite enthält, einschließlich object_id
, index_id
und partition_id
. Dank dieser Funktion ist die Verwendung von DBCC PAGE
in den meisten Fällen nicht mehr erforderlich.
Hinweis
sys.dm_db_page_info
wird derzeit nur in SQL Server 2019 (15.x) und höher unterstützt.
Syntax
sys.dm_db_page_info ( DatabaseId , FileId , PageId , Mode )
Argumente
DatabaseId | NULL | DEFAULT
Die ID der Datenbank. DatabaseId ist smallint. Gültige Eingabe ist die ID-Nummer einer Datenbank. Der Standardwert ist NULL, das Senden eines NULL-Werts für diesen Parameter führt jedoch zu einem Fehler.
FileId | NULL | DEFAULT
Die ID der Datei. FileId ist int. Gültige Eingabe ist die ID-Nummer einer Datei in der Datenbank, die durch DatabaseId angegeben wird. Der Standardwert ist NULL, das Senden eines NULL-Werts für diesen Parameter führt jedoch zu einem Fehler.
PageId | NULL | DEFAULT
Die ID der Seite. PageId ist int. Gültige Eingabe ist die ID-Nummer einer Datei in der Datenbank, die durch FileId angegeben wird. Der Standardwert ist NULL, das Senden eines NULL-Werts für diesen Parameter führt jedoch zu einem Fehler.
Modus | NULL | DEFAULT
Bestimmt die Detailebene in der Ausgabe der Funktion. 'LIMITED'
gibt NULL-Werte für alle Beschreibungsspalten zurück, „DETAILED“ füllt Beschreibungsspalten auf. DEFAULT
ist 'LIMITED'
.
Zurückgegebene Tabelle
Spaltenname | Datentyp | Beschreibung |
---|---|---|
database_id | int | Datenbank-ID In Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines Pools für elastische Datenbanken eindeutig, aber nicht innerhalb eines logischen Servers. |
file_id | int | Datei-ID |
page_id | int | Seiten-ID |
page_header_version | int | Kopfzeilenversion |
page_type | int | Seitentyp |
page_type_desc | nvarchar(64) | Beschreibung des Seitentyps |
page_type_flag_bits | nvarchar(64) | Geben Sie Flag-Bits in Kopfzeile ein |
page_type_flag_bits_desc | nvarchar(64) | Geben Sie Flag-Bits-Beschreibung in Kopfzeile ein |
page_flag_bits | nvarchar(64) | Flag-Bits in Kopfzeile |
page_flag_bits_desc | nvarchar(256) | Flag-Bits-Beschreibung in Kopfzeile |
page_lsn | nvarchar(64) | Protokollfolgenummer/Zeitstempel |
page_level | int | Ebene der Seite im Index (Blatt = 0) |
object_id | int | ID des Objekts, das die Seite besitzt |
index_id | int | ID des Indexes (0 für Heap-Datenseiten) |
partition_id | bigint | Die ID der Partition |
alloc_unit_id | bigint | ID der Zuordnungseinheit |
is_encrypted | bit | Bit, um anzugeben, ob die Seite verschlüsselt ist |
has_checksum | bit | Bit, um anzugeben, ob die Seite über einen Prüfsummenwert verfügt |
Prüfsumme | int | Speichert den Prüfsummenwert, der zum Erkennen von Datenbeschädigungen verwendet wird |
is_iam_pg | bit | Bit, um anzugeben, ob die Seite eine IAM-Seite ist oder nicht |
is_mixed_ext | bit | Bit, um anzugeben, ob die Zuordnung in gemischtem Umfang erfolgt |
has_ghost_records | bit | Bit, um anzugeben, ob die Seite inaktive Datensätze enthält Ein inaktiver Datensatz ist ein Datensatz, der zum Löschen markiert wurde, aber noch entfernt werden muss. |
has_version_records | bit | Bit, um anzugeben, ob die Seite Versionseinträge enthält, die für die beschleunigte Datenbankwiederherstellung verwendet werden |
pfs_page_id | int | Seiten-ID der entsprechenden PFS-Seite |
pfs_is_allocated | bit | Bit, um anzugeben, ob die Seite auf der entsprechenden PFS-Seite als zugeordnet gekennzeichnet ist |
pfs_alloc_percent | int | Zuteilungsprozent wie durch das entsprechende PFS-Byte angegeben |
pfs_status | nvarchar(64) | PFS-Byte |
pfs_status_desc | nvarchar(64) | Beschreibung des PFS-Byte |
gam_page_id | int | Seiten-ID der entsprechenden GAM-Seite |
gam_status | bit | Bit, um anzugeben, ob in GAM zugewiesen |
gam_status_desc | nvarchar(64) | Beschreibung des GAM-Statusbits |
sgam_page_id | int | Seiten-ID der entsprechenden SGAM-Seite |
sgam_status | bit | Bit, um anzugeben, ob in SGAM zugewiesen |
sgam_status_desc | nvarchar(64) | Beschreibung des SGAM-Statusbits |
diff_map_page_id | int | Seiten-ID der entsprechenden differenziellen Bitmapseite |
diff_status | bit | Bit, um anzugeben, ob der Diff-Status geändert wird |
diff_status_desc | nvarchar(64) | Beschreibung des Diff-Statusbits |
ml_map_page_id | int | Seiten-ID der entsprechenden Bitmapseite für die minimale Protokollierung |
ml_status | bit | Bit, um anzugeben, ob die Seite minimal protokolliert wird |
ml_status_desc | nvarchar(64) | Beschreibung des Bits für den minimalen Protokollierungsstatus |
prev_page_file_id | smallint | ID der vorherigen Seite |
prev_page_page_id | int | ID der vorherigen Seite |
next_page_file_id | smallint | Datei-ID der nächsten Seite |
next_page_page_id | int | ID der nächsten Seite |
fixed_length | smallint | Länge von Zeilen mit fester Größe |
slot_count | smallint | Gesamtanzahl der Slots (verwendet und nicht verwendet) Bei einer Datenseite entspricht diese Zahl der Anzahl von Zeilen. |
ghost_rec_count | smallint | Anzahl der Datensätze, die auf der Seite als nicht aktiv gekennzeichnet sind Ein inaktiver Datensatz ist ein Datensatz, der zum Löschen markiert wurde, aber noch entfernt werden muss. |
free_bytes | smallint | Anzahl der freien Bytes auf der Seite |
free_data_offset | int | Offset des freien Speicherplatzes am Ende des Datenbereichs |
reserved_bytes | smallint | Anzahl der freien Bytes, die für alle Transaktionen reserviert sind (wenn Heap) Anzahl der inaktiven Zeilen (wenn Indexblatt) |
reserved_bytes_by_xdes_id | smallint | Von m_xdesID zu m_reservedCnt beigetragener Platz Nur für Debugging-Zwecke |
xdes_id | nvarchar(64) | Letzte Transaktion von m_reserved Nur für Debugging-Zwecke |
Hinweise
Die dynamische Verwaltungsfunktion sys.dm_db_page_info
gibt Informationen wie page_id
, file_id
, index_id
, object_id
, usw. zurück, die in einer Kopfzeile enthalten sind. Diese Informationen sind hilfreich für die Problembehandlung und das Debuggen verschiedener Leistungsprobleme (Sperren und Sperren von Problemen) und Beschädigungen.
sys.dm_db_page_info
kann anstelle der DBCC PAGE
-Anweisung in vielen Fällen verwendet werden, aber es gibt nur die Kopfzeileninformationen zurück, nicht den Textkörper der Seite. DBCC PAGE
wird weiterhin für Anwendungsfälle benötigt, in denen der gesamte Inhalt der Seite erforderlich ist.
Verwendung in Verbindung mit anderen DMVs
Einer der wichtigsten Anwendungsfälle von sys.dm_db_page_info
ist die Verbindung mit anderen DMVs, die Seiteninformationen bereitstellen. Um diesen Anwendungsfall zu erleichtern, wurde eine neue Spalte page_resource
hinzugefügt, die Seiteninformationen in einem 8-Byte-Hexadezimalformat verfügbar macht. Diese Spalte wurde zu sys.dm_exec_requests
und sys.sysprocesses
hinzugefügt und wird in Zukunft je nach Bedarf auch zu anderen DMVs hinzugefügt werden.
Eine neue Funktion, sys.fn_PageResCracker
, verwendet die page_resource
als Eingabe und gibt eine einzelne Zeile aus, die database_id
, file_id
und page_id
enthält. Diese Funktion kann dann verwendet werden, um Verknüpfungen zwischen sys.dm_exec_requests
oder sys.sysprocesses
und sys.dm_db_page_info
zu unterstützen.
Berechtigungen
Erfordert die Berechtigung VIEW DATABASE STATE
für die Datenbank.
Berechtigungen für SQL Server 2022 und höher
Erfordert die VIEW DATABASE PERFORMANCE STATE-Berechtigung für die Datenbank.
Beispiele
A. Zeigt alle Eigenschaften einer Seite an
Die folgende Abfrage gibt eine Zeile mit allen Seiteninformationen für eine bestimmte database_id
, file_id
, page_id
Kombination mit Standardmodus ('LIMITED') zurück
SELECT *
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT);
B. Verwenden von sys.dm_db_page_info mit anderen DMVs
Die folgende Abfrage gibt eine Zeile pro wait_resource
zurück, das von sys.dm_exec_requests
aufgedeckt wird, wenn die Zeile ein page_resource
enthält, das nicht null ist
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;