sys.dm_exec_query_statistics_xml (T-SQL)
Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL Database Azure SQL Managed Instance yang lebih baru
Mengembalikan rencana eksekusi kueri untuk permintaan dalam penerbangan. Gunakan DMV ini untuk mengambil XML showplan dengan statistik sementara.
Sintaks
sys.dm_exec_query_statistics_xml(session_id)
Argumen
session_id
Apakah id sesi yang menjalankan batch akan dicari. session_id kecil. session_id dapat diperoleh dari objek manajemen dinamis berikut:
Tabel Dikembalikan
Nama kolom | Jenis Data | Deskripsi |
---|---|---|
id_sesi | smallint | ID sesi. Tidak dapat diubah ke null. |
request_id | int | ID permintaan. Tidak dapat diubah ke null. |
sql_handle | varbinary(64) | Adalah token yang secara unik mengidentifikasi prosedur batch atau tersimpan yang menjadi bagian kueri. Dapat diubah ke null. |
plan_handle | varbinary(64) | Adalah token yang secara unik mengidentifikasi rencana eksekusi kueri untuk batch yang sedang dijalankan. Dapat diubah ke null. |
query_plan | xml | Berisi representasi Showplan runtime dari rencana eksekusi kueri yang ditentukan dengan plan_handle berisi statistik parsial. Showplan dalam format XML. Satu paket dihasilkan untuk setiap batch yang berisi, misalnya pernyataan Transact-SQL ad hoc, panggilan prosedur tersimpan, dan panggilan fungsi yang ditentukan pengguna. Dapat diubah ke null. |
Keterangan
Penting
Memiliki kemungkinan pelanggaran akses acak (AV) saat menjalankan prosedur tersimpan pemantauan dengan sys.dm_exec_query_statistics_xml
DMV, nilai ParameterRuntimeValue
ParameterList> atribut <XML Showplan dihapus di SQL Server 2017 (14.x) CU 26 dan SQL Server 2019 (15.x) CU 12. Nilai ini dapat berguna saat memecahkan masalah prosedur tersimpan yang berjalan lama.
Dimulai dengan SQL Server 2017 (14.x) CU 31 dan SQL Server 2019 (15.x) CU 19, kumpulan nilai ParameterRuntimeValue
ParameterList> atribut <XML Showplan telah diaktifkan kembali dengan dimasukkannya bendera pelacakan 2446. Bendera pelacakan ini memungkinkan pengumpulan nilai parameter runtime dengan biaya memperkenalkan overhead tambahan.
Peringatan
Bendera Pelacakan 2446 tidak dimaksudkan untuk diaktifkan terus menerus di lingkungan produksi, tetapi hanya untuk tujuan pemecahan masalah yang terbatas waktu. Menggunakan bendera pelacakan ini akan memperkenalkan tambahan dan mungkin overhead CPU dan memori yang signifikan karena kami akan membuat fragmen XML Showplan dengan informasi parameter runtime, apakah sys.dm_exec_query_statistics_xml
DMV dipanggil atau tidak.
Catatan
Dimulai dengan SQL Server 2022 (16.x), Azure SQL Database, dan Azure SQL Managed Instance, untuk mencapainya di tingkat database, lihat opsi FORCE_SHOWPLAN_RUNTIME_PARAMETER_COLLECTION dalam MENGUBAH KONFIGURASI CAKUPAN DATABASE (Transact-SQL).
Fungsi sistem ini tersedia dimulai dengan SQL Server 2016 (13.x) SP1. Lihat 3190871 KB
Fungsi sistem ini berfungsi di bawah infrastruktur pembuatan profil statistik eksekusi kueri standar dan ringan . Untuk informasi selengkapnya, lihat Infrastruktur Pembuatan Profil Kueri.
Dalam kondisi berikut, tidak ada output Showplan yang dikembalikan di kolom query_plan tabel yang dikembalikan untuk sys.dm_exec_query_statistics_xml:
- Jika rencana kueri yang sesuai dengan session_id yang ditentukan tidak lagi dijalankan, kolom query_plan tabel yang dikembalikan null. Misalnya, kondisi ini dapat terjadi jika ada penundaan waktu antara ketika handel rencana diambil dan ketika digunakan dengan sys.dm_exec_query_statistics_xml.
Karena keterbatasan jumlah tingkat berlapis yang diizinkan dalam jenis data xml , sys.dm_exec_query_statistics_xml tidak dapat mengembalikan rencana kueri yang memenuhi atau melebihi 128 tingkat elemen berlapis. Dalam versi SQL Server sebelumnya, kondisi ini mencegah rencana kueri kembali dan menghasilkan kesalahan 6335. Di Paket Layanan SQL Server 2005 (9.x) 2 dan versi yang lebih baru, kolom query_plan mengembalikan NULL.
Izin
Di SQL Server, memerlukan VIEW SERVER STATE
izin di server.
Pada Tingkat Premium SQL Database, memerlukan VIEW DATABASE STATE
izin dalam database. Pada Tingkat Standar dan Dasar SQL Database, memerlukan admin Server atau akun admin Microsoft Entra.
Izin untuk SQL Server 2022 dan yang lebih baru
Memerlukan izin TAMPILKAN STATUS PERFORMA SERVER pada server.
Contoh
J. Melihat rencana kueri langsung dan statistik eksekusi untuk batch yang sedang berjalan
Contoh berikut mengkueri sys.dm_exec_requests untuk menemukan kueri yang menarik dan menyalinnya session_id
dari output.
SELECT * FROM sys.dm_exec_requests;
GO
Kemudian, untuk mendapatkan rencana kueri langsung dan statistik eksekusi, gunakan yang disalin session_id
dengan fungsi sistem sys.dm_exec_query_statistics_xml.
--Run this in a different session than the session in which your query is running.
SELECT * FROM sys.dm_exec_query_statistics_xml(< copied session_id >);
GO
Atau digabungkan untuk semua permintaan yang sedang berjalan.
--Run this in a different session than the session in which your query is running.
SELECT
eqs.query_plan,
er.session_id,
er.request_id,
er.database_id,
er.start_time,
er.[status],
er.wait_type,
er.wait_resource,
er.last_wait_type,
(er.cpu_time/1000) AS cpu_time_sec,
(er.total_elapsed_time/1000)/60 AS elapsed_time_minutes,
(er.logical_reads*8)/1024 AS logical_reads_KB,
er.granted_query_memory,
er.dop,
er.row_count,
er.query_hash,
er.query_plan_hash
FROM sys.dm_exec_requests er
CROSS APPLY sys.dm_exec_query_statistics_xml(session_id) eqs
WHERE er.session_id <> @@spid;
GO
Lihat Juga
Lacak Bendera
Tampilan dan Fungsi Manajemen Dinamis (Transact-SQL)
Tampilan Manajemen Dinamis Terkait Database (Transact-SQL)