sys.dm_db_page_info (Transact-SQL)

Gilt für: SQL Server 2019 (15.x) Azure SQL-DatenbankAzure SQL Managed Instance

Gibt Informationen zu einer Seite in einer Datenbank zurück. Die Funktion gibt eine Zeile zurück, die die Kopfzeileninformationen von der Seite enthält, einschließlich des object_id, index_idund 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 | STANDARD

Die ID der Datenbank. DatabaseId ist klein. 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 | STANDARD

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 | STANDARD

Die ID der Seite. PageId ist int. Gültige Eingabe ist die ID-Nummer einer Seite in der datei, die von FileId angegeben wird. Der Standardwert ist NULL, das Senden eines NULL-Werts für diesen Parameter führt jedoch zu einem Fehler.

Modus | NULL | STANDARD

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 der Azure SQL-Datenbank sind die Werte innerhalb einer einzelnen Datenbank oder eines elastischen Pools eindeutig, aber nicht innerhalb eines logischen Servers.
file_id int Datei-ID
page_id int Seiten-ID
page_header_version int Seitenkopfversion
page_type int Seitentyp
page_type_desc nvarchar(64) Beschreibung des Seitentyps
page_type_flag_bits nvarchar(64) Geben Sie Flag-Bits in den Seitenkopf ein.
page_type_flag_bits_desc nvarchar(64) Beschreibung der Kennzeichnungsbits im Seitenkopf
page_flag_bits nvarchar(64) Kennzeichnen von Bits im Seitenkopf
page_flag_bits_desc nvarchar(256) Beschreibung von Flagbits im Seitenkopf
page_lsn nvarchar(64) Protokollsequenznummer /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 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 es sich bei der Seite um eine IAM-Seite handelt.
is_mixed_ext bit Bit, um anzugeben, ob die Zuordnung in gemischtem Umfang erfolgt
has_ghost_records bit Bit, um anzugeben, ob die Seite Geistereinträge enthält
Ein gespensierter 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 Steckplätze (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 Geist gekennzeichnet sind
Ein gespensierter 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 gespenster Zeilen (wenn Indexblatt)
reserved_bytes_by_xdes_id smallint Von m_xdesID zur m_reservedCnt beigetragener Raum
Nur für Debuggingzwecke
xdes_id nvarchar(64) Letzte Transaktion von m_reserved
Nur für Debuggingzwecke

Hinweise

Die sys.dm_db_page_info dynamische Verwaltungsfunktion gibt Informationen wie page_id, , file_id, index_id, object_idusw. zurück, die in einer Seitenüberschrift vorhanden 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 Seitenkopfinformationen 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 wichtigen Anwendungsfälle sys.dm_db_page_info besteht darin, ihn mit anderen DMVs zu verbinden, die Seiteninformationen verfügbar machen. 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 anderen DMVs hinzugefügt und sys.sysprocesses wird nach Bedarf zu anderen DMVs hinzugefügt.

Eine neue Funktion , sys.fn_PageResCrackerverwendet die page_resource als Eingabe und gibt eine einzelne Zeile aus, die enthält database_id, file_id und page_id. Diese Funktion kann dann verwendet werden, um Verknüpfungen zwischen sys.dm_exec_requests oder sys.sysprocesses und .sys.dm_db_page_info

Berechtigungen

Erfordert die VIEW DATABASE STATE Berechtigung in der Datenbank.

Berechtigungen für SQL Server 2022 und höher

Erfordert DIE BERECHTIGUNG "DATENBANKLEISTUNGSSTATUS ANZEIGEN" für die Datenbank.

Beispiele

A. Anzeigen aller Eigenschaften einer Seite

Die folgende Abfrage gibt eine Zeile mit allen Seiteninformationen für eine bestimmte database_id, file_idkombination page_id 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 verfügbar gemacht zurück sys.dm_exec_requests , wenn die Zeile einen Wert ungleich Null enthält. 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;

Siehe auch