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;

Weitere Informationen