sys.dm_db_page_info (T-SQL)

Berlaku untuk: SQL Server 2019 (15.x) Azure SQL DatabaseAzure SQL Managed Instance

Mengembalikan informasi tentang halaman dalam database. Fungsi mengembalikan satu baris yang berisi informasi header dari halaman, termasuk object_id, , index_iddan partition_id. Fungsi ini menggantikan kebutuhan untuk digunakan DBCC PAGE dalam banyak kasus.

Catatan

sys.dm_db_page_info saat ini hanya didukung di SQL Server 2019 (15.x) dan yang lebih baru.

Sintaks

sys.dm_db_page_info ( DatabaseId , FileId , PageId , Mode )

Argumen

DatabaseId | NULL | DEFAULT

ID database. DatabaseId kecil. Input yang valid adalah nomor ID database. Defaultnya adalah NULL, namun mengirim nilai NULL untuk parameter ini akan mengakibatkan kesalahan.

FileId | NULL | DEFAULT

ID file. FileId adalah int. Input yang valid adalah nomor ID file dalam database yang ditentukan oleh DatabaseId. Defaultnya adalah NULL, namun mengirim nilai NULL untuk parameter ini akan mengakibatkan kesalahan.

PageId | NULL | DEFAULT

ID halaman. PageId adalah int. Input yang valid adalah nomor ID halaman dalam file yang ditentukan oleh FileId. Defaultnya adalah NULL, namun mengirim nilai NULL untuk parameter ini akan mengakibatkan kesalahan.

Mode | NULL | DEFAULT

Menentukan tingkat detail dalam output fungsi. 'LIMITED' akan mengembalikan nilai NULL untuk semua kolom deskripsi, 'DETAILED' akan mengisi kolom deskripsi. DEFAULT adalah 'LIMITED'.

Tabel dikembalikan

Nama kolom Jenis data Deskripsi
database_id int ID Database.

Di Azure SQL Database, nilainya unik dalam satu database atau kumpulan elastis, tetapi tidak dalam server logis.
file_id int File ID
page_id int ID Halaman
page_header_version int Versi header halaman
page_type int Jenis Halaman
page_type_desc nvarchar(64) Deskripsi jenis halaman
page_type_flag_bits nvarchar(64) Ketik bit Bendera di header halaman
page_type_flag_bits_desc nvarchar(64) Ketik deskripsi bit bendera di header halaman
page_flag_bits nvarchar(64) Bit bendera di header halaman
page_flag_bits_desc nvarchar(256) Deskripsi bit bendera di header halaman
page_lsn nvarchar(64) Nomor urutan log / tanda waktu
page_level int Tingkat halaman dalam indeks (daun = 0)
object_id int ID objek yang memiliki halaman
index_id int ID indeks (0 untuk halaman data timbunan)
partition_id bigint ID partisi
alloc_unit_id bigint ID unit alokasi
is_encrypted bit Bit untuk menunjukkan apakah halaman dienkripsi atau tidak
has_checksum bit Bit untuk menunjukkan apakah halaman memiliki nilai checksum atau tidak
Checksum int Menyimpan nilai checksum yang digunakan untuk mendeteksi kerusakan data
is_iam_pg bit Bit untuk menunjukkan apakah halaman tersebut adalah halaman IAM atau tidak
is_mixed_ext bit Bit untuk menunjukkan apakah dialokasikan dalam tingkat campuran
has_ghost_records bit Bit untuk menunjukkan apakah halaman berisi rekaman hantu
Rekaman hantu adalah rekaman yang telah ditandai untuk dihapus tetapi belum dihapus.
has_version_records bit Bit untuk menunjukkan apakah halaman berisi rekaman versi yang digunakan untuk pemulihan database yang dipercepat
pfs_page_id int ID Halaman halaman PFS terkait
pfs_is_allocated bit Bit untuk menunjukkan apakah halaman ditandai sebagai dialokasikan di halaman PFS terkait atau tidak
pfs_alloc_percent int Persentase alokasi seperti yang ditunjukkan oleh byte PFS yang sesuai
pfs_status nvarchar(64) Byte PFS
pfs_status_desc nvarchar(64) Deskripsi byte PFS
gam_page_id int ID Halaman halaman GAM yang sesuai
gam_status bit Bit untuk menunjukkan apakah dialokasikan di GAM
gam_status_desc nvarchar(64) Deskripsi bit status GAM
sgam_page_id int ID Halaman halaman SGAM yang sesuai
sgam_status bit Bit untuk menunjukkan apakah dialokasikan di SGAM
sgam_status_desc nvarchar(64) Deskripsi bit status SGAM
diff_map_page_id int ID Halaman halaman bitmap diferensial yang sesuai
diff_status bit Bit untuk menunjukkan apakah status diff diubah
diff_status_desc nvarchar(64) Deskripsi bit status diff
ml_map_page_id int ID Halaman dari halaman bitmap pengelogan minimal yang sesuai
ml_status bit Bit untuk menunjukkan apakah halaman dicatat minimal
ml_status_desc nvarchar(64) Deskripsi bit status pengelogan minimal
prev_page_file_id smallint ID file halaman sebelumnya
prev_page_page_id int ID halaman sebelumnya
next_page_file_id smallint ID file halaman berikutnya
next_page_page_id int ID halaman berikutnya
fixed_length smallint Panjang baris ukuran tetap
slot_count smallint Jumlah total slot (digunakan dan tidak digunakan)
Untuk halaman data, angka ini setara dengan jumlah baris.
ghost_rec_count smallint Jumlah rekaman yang ditandai sebagai hantu di halaman
Rekaman hantu adalah rekaman yang telah ditandai untuk dihapus tetapi belum dihapus.
free_bytes smallint Jumlah byte gratis pada halaman
free_data_offset int Offset ruang kosong di akhir area data
reserved_bytes smallint Jumlah byte gratis yang dipesan oleh semua transaksi (jika tumpukan)
Jumlah baris hantu (jika daun indeks)
reserved_bytes_by_xdes_id smallint Ruang yang disumbangkan oleh m_xdesID ke m_reservedCnt
Hanya untuk tujuan penelusuran kesalahan
xdes_id nvarchar(64) Transaksi terbaru yang dikontribusikan oleh m_reserved
Hanya untuk tujuan penelusuran kesalahan

Keterangan

Fungsi sys.dm_db_page_info manajemen dinamis mengembalikan informasi seperti page_id, , file_id, index_idobject_id, dan sebagainya, yang ada di header halaman. Informasi ini berguna untuk memecahkan masalah dan men-debug berbagai performa (ketidakcocokan kunci dan kait) dan masalah kerusakan.

sys.dm_db_page_info dapat digunakan sebagai pengganti DBCC PAGE pernyataan dalam banyak kasus, tetapi hanya mengembalikan informasi header halaman, bukan isi halaman. DBCC PAGE masih akan diperlukan untuk kasus penggunaan di mana seluruh konten halaman diperlukan.

Gunakan bersama dengan DMV lain

Salah satu kasus sys.dm_db_page_info penggunaan penting adalah menggabungkannya dengan DMV lain yang mengekspos informasi halaman. Untuk memfasilitasi kasus penggunaan ini, kolom baru yang disebut page_resource telah ditambahkan yang mengekspos informasi halaman dalam format heksadesimal 8-byte. Kolom ini telah ditambahkan ke sys.dm_exec_requests dan sys.sysprocesses dan akan ditambahkan ke DMV lain di masa mendatang sesuai kebutuhan.

Fungsi baru, sys.fn_PageResCracker, mengambil page_resource sebagai input dan menghasilkan satu baris yang berisi database_id, file_id dan page_id. Fungsi ini kemudian dapat digunakan untuk memfasilitasi gabungan antara sys.dm_exec_requests atau sys.sysprocesses dan sys.dm_db_page_info.

Izin

VIEW DATABASE STATE Memerlukan izin dalam database.

Izin untuk SQL Server 2022 dan yang lebih baru

Memerlukan izin TAMPILKAN STATUS PERFORMA DATABASE pada database.

Contoh

J. Menampilkan semua properti halaman

Kueri berikut mengembalikan satu baris dengan semua informasi halaman untuk , , file_idpage_id kombinasi tertentu database_iddengan mode default ('LIMITED')

SELECT *
FROM sys.dm_db_page_info (5, 1, 15, DEFAULT);

B. Gunakan sys.dm_db_page_info dengan DMV lain

Kueri berikut mengembalikan satu baris per wait_resource yang diekspos oleh sys.dm_exec_requests saat baris berisi 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;

Baca juga