Aracılığıyla paylaş


sp_query_store_force_plan (Transact-SQL)

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümler Azure SQL DatabaseAzure SQL Managed InstanceSQL database in Microsoft Fabric

Sorgu Deposu'ndaki belirli bir sorgu için belirli bir planı zorlamayı etkinleştirir.

Bir plan belirli bir sorgu için zorlandığında, SQL Server sorguyla her karşılaştığında, planı Sorgu İyileştiricisi'nde zorlamaya çalışır. Plan zorlama başarısız olursa Genişletilmiş Olay tetiklenir ve Sorgu İyileştirici'ye normal şekilde iyileştirmesi istenir.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Bağımsız değişken

Önemli

Genişletilmiş saklı yordamlar için bağımsız değişkenler, Sözdizimi bölümünde açıklandığı gibi belirli bir sırada girilmelidir. Parametreler sıra dışı girilirse bir hata iletisi oluşur.

[ @query_id = ] query_id

Sorgunun kimliği. @query_idbigintvarsayılan değildir.

[ @plan_id = ] plan_id

Zorlanacak sorgu planının kimliği. @plan_idbigint, varsayılan değer yoktur.

[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing

İyileştirilmiş plan zorlamanın devre dışı bırakılıp bırakılmayacağını gösterir. @disable_optimized_plan_forcing, varsayılan olarak olan 0.

[ @replica_group_id = ] 'replica_group_id'

Okunabilir ikincil öğeler için Sorgu Deposu etkinleştirildiğinde ikincil çoğaltmada planları zorlayabilirsiniz. birincil çoğaltmada sp_query_store_force_plan ve sp_query_store_unforce_plan yürütür. @replica_group_id bağımsız değişkeninin kullanılması varsayılan olarak komutun yürütüldüğü yerel çoğaltmadır, ancak sys.query_store_plan_forcing_locations sistem kataloğu görünümüne başvuran bir replica_group_id belirtebilirsiniz.

Dönüş kodu değerleri

0 (başarı) veya 1 (başarısızlık).

Açıklamalar

Bu özellik tarafından zorlanan sonuçta elde edilen yürütme planı, zorlanan plana benzer veya aynıdır. Sonuçta elde edilen plan, sys.sp_query_store_force_plantarafından belirtilen planla aynı olmadığından, planların performansı değişebilir. Nadir durumlarda performans farkı önemli ve negatif olabilir; bu durumda yöneticinin zorunlu planı kaldırması gerekir.

sys.query_store_plan_forcing_locationsile ikincil çoğaltmalardaki zorunlu planları gözden geçirin.

İzinler

ALTER Veritabanında izin gerektirir.

Örnekler

Aşağıdaki örnek, Sorgu Deposu'ndaki sorgular hakkında bilgi döndürür.

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;

Zorlamak istediğiniz query_id ve plan_id belirledikten sonra, sorguyu plan kullanmaya zorlamak için aşağıdaki örneği kullanın.

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

Okunabilir ikincil öğeler için Sorgu Deposu'nı almak için sys.query_store_replicas ile birleştirilmiş sys.query_store_plan_forcing_locationskullanın.

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';