Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2019 (15.x) und höhere Versionen
von Azure SQL Database
Azure SQL Managed Instance
SQL sql database in Microsoft Fabric
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 | VORGABE
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 | VORGABE
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 | Standardwert
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;