sp_query_store_force_plan (T-SQL)

Berlaku untuk: SQL Server 2016 (13.x) dan Azure SQL DatabaseAzure SQL Managed Instance yang lebih baru

Memungkinkan memaksa paket tertentu untuk kueri tertentu di Penyimpanan Kueri.

Ketika paket dipaksa untuk kueri tertentu, setiap kali SQL Server menemukan kueri, SQL Server mencoba memaksa rencana di Pengoptimal Kueri. Jika rencana memaksa gagal, Peristiwa yang Diperluas diaktifkan dan Pengoptimal Kueri diinstruksikan untuk mengoptimalkan dengan cara normal.

Konvensi sintaks transact-SQL

Sintaks

sp_query_store_force_plan
    [ @query_id = ] query_id ,
    [ @plan_id = ] plan_id ,
    [ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing ,
    [ @force_plan_scope = ] 'replica_group_id'
[ ; ]

Argumen

[ @query_id = ] query_id

ID kueri. @query_id besar, tanpa default.

[ @plan_id = ] plan_id

ID rencana kueri yang akan dipaksakan. @plan_id besar, tanpa default.

[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing

Menunjukkan apakah memaksa rencana yang dioptimalkan harus dinonaktifkan. @disable_optimized_plan_forcing sedikit dengan default 0.

[ @force_plan_scope = ] 'replica_group_id'

Anda dapat memaksa rencana pada replika sekunder saat Penyimpanan Kueri untuk replika sekunder diaktifkan. Jalankan sp_query_store_force_plan dan sp_query_store_unforce_plan pada replika sekunder. Argumen @force_plan_scope opsional hanya default ke replika lokal (primer atau sekunder), tetapi Anda dapat secara opsional menentukan replica_group_id mereferensikan sys.query_store_replicas.

Mengembalikan nilai kode

0 (berhasil) atau 1 (kegagalan).

Keterangan

Rencana eksekusi yang dihasilkan yang dipaksa oleh fitur ini sama atau mirip dengan rencana yang dipaksakan. Karena rencana yang dihasilkan mungkin tidak identik dengan rencana yang ditentukan oleh sys.sp_query_store_force_plan, performa rencana dapat bervariasi. Dalam kasus yang jarang terjadi, perbedaan performa mungkin signifikan dan negatif; dalam hal ini, administrator harus menghapus rencana paksa.

Tinjau rencana paksa pada replika sekunder dengan sys.query_store_plan_forcing_locations.

Izin

Memerlukan izin UBAH pada database.

Contoh

Contoh berikut mengembalikan informasi tentang kueri di Penyimpanan Kueri.

SELECT txt.query_text_id,
    txt.query_sql_text,
    pl.plan_id,
    qry.*
FROM sys.query_store_plan AS pl
INNER JOIN sys.query_store_query AS qry
    ON pl.query_id = qry.query_id
INNER JOIN sys.query_store_query_text AS txt
    ON qry.query_text_id = txt.query_text_id;

Setelah Anda mengidentifikasi query_id dan plan_id yang ingin Anda paksa, gunakan contoh berikut untuk memaksa kueri menggunakan paket.

EXEC sp_query_store_force_plan
    @query_id = 3,
    @plan_id = 3;

Gunakan sys.query_store_plan_forcing_locations, yang digabungkan dengan sys.query_store_replicas, untuk mengambil paket Query Store yang dipaksa pada semua replika sekunder.

SELECT query_plan
FROM sys.query_store_plan AS qsp
INNER JOIN sys.query_store_plan_forcing_locations AS pfl
    ON pfl.query_id = qsp.query_id
INNER JOIN sys.query_store_replicas AS qsr
    ON qsr.replica_group_id = qsp.replica_group_id
WHERE qsr.replica_name = 'yourSecondaryReplicaName';