sys.dm_db_page_info (Transact-SQL)
Si applica a: SQL Server 2019 (15.x) Database SQL di Azure Istanza gestita di SQL di Azure
Restituisce informazioni su una pagina di un database. La funzione restituisce una riga che contiene le informazioni di intestazione della pagina, tra cui object_id
, index_id
e partition_id
. Questa funzione sostituisce l'uso di DBCC PAGE
nella maggior parte dei casi.
Nota
sys.dm_db_page_info
è attualmente supportato solo in SQL Server 2019 (15.x) e versioni successive.
Sintassi
sys.dm_db_page_info ( DatabaseId , FileId , PageId , Mode )
Argomenti
DatabaseId | NULL | DEFAULT
ID del database. DatabaseId è smallint. L’input valido è il numero ID di un database. Il valore predefinito è NULL, ma l'invio di un valore NULL per questo parametro genererà un errore.
FileId | NULL | DEFAULT
ID del file. FileId è int. L'input valido è il numero ID di un file nel database specificato da DatabaseId. Il valore predefinito è NULL, ma l'invio di un valore NULL per questo parametro genererà un errore.
PageId | NULL | DEFAULT
L’ID della pagina. PageId è int. L'input valido è il numero ID di una pagine nel file specificato da FileId. Il valore predefinito è NULL, ma l'invio di un valore NULL per questo parametro genererà un errore.
Mode | NULL | DEFAULT
Determina il livello di dettaglio nell'output della funzione. 'LIMITED'
restituirà valori NULL per tutte le colonne di descrizione, 'DETAILED' popola le colonne di descrizione. DEFAULT
è .'LIMITED'
Tabella restituita
Nome colonna | Tipo di dati | Descrizione |
---|---|---|
database_id | int | ID del database. In database SQL di Azure i valori sono univoci all'interno di un database singolo o di un pool elastico, ma non all'interno di un server logico. |
file_id | int | ID file |
page_id | int | ID pagina |
page_header_version | int | Versione intestazione pagina |
page_type | int | Tipo di pagina |
page_type_desc | nvarchar(64) | Descrizione del tipo di pagina |
page_type_flag_bits | nvarchar(64) | Digitare i bit flag nell'intestazione pagina |
page_type_flag_bits_desc | nvarchar(64) | Digitare la descrizione dei bit di flag nell'intestazione pagina |
page_flag_bits | nvarchar(64) | Bit flag nell'intestazione pagina |
page_flag_bits_desc | nvarchar(256) | Descrizione dei bit di flag nell'intestazione della pagina |
page_lsn | nvarchar(64) | Numero di sequenza del file di log (LSN) / data e ora |
page_level | int | Livello della pagina nell'indice (foglia = 0) |
object_id | int | ID dell'oggetto proprietario della pagina |
index_id | int | ID dell'indice (0 per le pagine di dati heap) |
partition_id | bigint | ID della partizione |
alloc_unit_id | bigint | ID dell'unità di allocazione |
is_encrypted | bit | Bit per indicare se la pagina è crittografata o meno |
has_checksum | bit | Bit per indicare se la pagina ha o meno un valore di checksum |
checksum | int | Archivia il valore di checksum usato per rilevare il danneggiamento dei dati |
is_iam_pg | bit | Bit per indicare se la pagina è una pagina IAM o meno |
is_mixed_ext | bit | Bit per indicare se allocato in un extent misto |
has_ghost_records | bit | Bit per indicare se la pagina contiene record fantasma Un record fantasma è un record contrassegnato per l'eliminazione, ma che deve ancora essere rimosso. |
has_version_records | bit | Bit per indicare se la pagina contiene record di versione usati per il ripristino accelerato del database |
pfs_page_id | int | ID pagina della pagina PFS corrispondente |
pfs_is_allocated | bit | Bit per indicare se la pagina è contrassegnata come allocata nella pagina PFS corrispondente |
pfs_alloc_percent | int | Percentuale di allocazione come indicato dal byte PFS corrispondente |
pfs_status | nvarchar(64) | Byte PFS |
pfs_status_desc | nvarchar(64) | Descrizione del byte PFS |
gam_page_id | int | ID pagina della pagina GAM corrispondente |
gam_status | bit | Bit per indicare se allocato in GAM |
gam_status_desc | nvarchar(64) | Descrizione del bit di stato GAM |
sgam_page_id | int | ID pagina della pagina SGAM corrispondente |
sgam_status | bit | Bit per indicare se allocato in SGAM |
sgam_status_desc | nvarchar(64) | Descrizione del bit di stato SGAM |
diff_map_page_id | int | ID pagina della pagina bitmap differenziale corrispondente |
diff_status | bit | Bit per indicare se lo stato diff viene modificato |
diff_status_desc | nvarchar(64) | Descrizione del bit di stato diff |
ml_map_page_id | int | ID pagina della pagina bitmap di registrazione minima corrispondente |
ml_status | bit | Bit per indicare se la pagina è con registrazione minima |
ml_status_desc | nvarchar(64) | Descrizione del bit di stato di registrazione minimo |
prev_page_file_id | smallint | ID file di pagina precedente |
prev_page_page_id | int | ID pagina precedente |
next_page_file_id | smallint | ID file di pagina successivo |
next_page_page_id | int | ID pagina successiva |
fixed_length | smallint | Lunghezza delle righe a dimensione fissa |
slot_count | smallint | Numero totale di slot (usati e inutilizzati) Per una pagina di dati, questo numero equivale al numero di righe. |
ghost_rec_count | smallint | Numero di record contrassegnati come fantasma nella pagina Un record fantasma è un record contrassegnato per l'eliminazione, ma che deve ancora essere rimosso. |
free_bytes | smallint | Numero di byte liberi nella pagina |
free_data_offset | int | Scarto dello spazio disponibile alla fine dell'area dati |
reserved_bytes | smallint | Numero di byte liberi riservati da tutte le transazioni (se heap) Numero di righe fantasma (se foglia indice) |
reserved_bytes_by_xdes_id | smallint | Spazio contribuito da m_xdesID a m_reservedCnt Solo per fini di debug |
xdes_id | nvarchar(64) | Ultima transazione contribuita da m_reserved Solo per fini di debug |
Osservazioni:
La funzione a gestione dinamica sys.dm_db_page_info
restituisce informazioni quali page_id
, file_id
, index_id
, object_id
e così via, presenti in un'intestazione pagina. Queste informazioni sono utili per la risoluzione dei problemi e il debug di vari problemi di prestazioni (contesa di blocchi e latch) e danneggiamento.
sys.dm_db_page_info
può essere usato al posto dell'istruzione DBCC PAGE
in molti casi, ma restituisce solo le informazioni sull'intestazione della pagina, non il corpo della pagina. DBCC PAGE
sarà comunque necessario per i casi d'uso in cui è necessario l'intero contenuto della pagina.
Usare insieme ad altri DMV
Uno dei casi d'uso importanti di sys.dm_db_page_info
consiste nell'aggiungerlo ad altri DMV che espongono informazioni sulla pagina. Per facilitare questo caso d'uso, è stata aggiunta una nuova colonna denominata page_resource
che espone le informazioni sulla pagina in un formato esadecimale a 8 byte. Questa colonna è stata aggiunta a sys.dm_exec_requests
e sys.sysprocesses
verrà aggiunta ad altre DMV in futuro in base alle esigenze.
Una nuova funzione, sys.fn_PageResCracker
, accetta page_resource
come input e restituisce una singola riga contenente database_id
, file_id
e page_id
. Questa funzione può quindi essere usata per facilitare l’unione tra sys.dm_exec_requests
o sys.sysprocesses
e sys.dm_db_page_info
.
Autorizzazioni
In VIEW DATABASE STATE
è richiesta l'autorizzazione per il database.
Autorizzazioni per SQL Server 2022 e versioni successive
È richiesta l'autorizzazione VIEW DATABASE PERFORMANCE STATE per il database.
Esempi
R. Visualizzare le proprietà di una pagina
La query seguente restituisce una riga con tutte le informazioni sulla pagina per una determinata combinazione di database_id
, file_id
, page_id
con la modalità predefinita ('LIMITED')
SELECT *
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT);
B. Usare sys.dm_db_page_info con altri DMV
La query seguente restituisce una riga per ogni wait_resource
riga esposta da sys.dm_exec_requests
quando la riga contiene un valore non Null 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;