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_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 | 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_id
usw. 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_PageResCracker
verwendet 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_id
kombination 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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für