sys.dm_db_page_info (Transact-SQL)

Si applica a: SQL Server 2019 (15.x) Database Azure SQLIstanza 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;

Vedi anche