共用方式為


sp_query_store_force_plan (Transact-SQL)

適用於: SQL Server 2016 (13.x) 及以後版本 Azure SQL Database AzureSQL Managed InstanceSQL database in Microsoft Fabric

啟用強制 查詢存放區 中特定查詢的特定計劃。

當特定查詢強制執行計劃時,每當 SQL Server 遇到查詢時,就會嘗試在查詢優化器中強制計劃。 如果計劃強制失敗,則會引發擴充事件,並指示查詢優化器以正常方式優化。

Transact-SQL 語法慣例

語法

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

引數

重要

擴充預存程式的自變數必須依特定順序輸入,如 語法 一節所述。 如果參數依序輸入,就會發生錯誤訊息。

[ @query_id = ] query_id

查詢的識別碼。 @query_id為 bigint,沒有預設值。

[ @plan_id = ] plan_id

要強制的查詢計劃標識碼。 @plan_id是 bigint,沒有預設值。

[ @disable_optimized_plan_forcing = ] disable_optimized_plan_forcing

指出是否應停用優化計劃強制。 @disable_optimized_plan_forcing是,預設值為 0

[ @replica_group_id = ] 「replica_group_id

啟用 可讀取次要複本的查詢存放區 時,您可以強制執行次要複本的計劃。 在主要複本上執行 sp_query_store_force_plansp_query_store_unforce_plan。 使用 @replica_group_id 引數會預設為執行指令的本端抄本,但您可以指定參照sys.query_store_plan_forcing_locations系統型錄視圖的replica_group_id

傳回碼值

0 (成功) 或 1 (失敗)。

備註

這項功能所強制產生的執行計劃與強制執行計劃相同或類似。 由於產生的計劃可能與 所 sys.sp_query_store_force_plan指定的計劃不同,因此計劃的效能可能會有所不同。 在罕見的情況下,效能差異可能是顯著且負面的;在此情況下,系統管理員必須移除強制計劃。

使用 sys.query_store_plan_forcing_locations 檢閱次要複本上的強制計劃。

權限

需要 ALTER 資料庫的權限。

範例

下列範例會傳回 查詢存放區 中查詢的相關信息。

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;

識別 您想要強制執行的query_idplan_id 之後,請使用下列範例來強制查詢使用計劃。

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

使用 與 sys.query_store_replicas 聯結的 sys.query_store_plan_forcing_locations擷取可讀取次要複本的查詢存放區

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