--- title: "sp_query_store_force_plan (Transact-SQL) | Microsoft Docs" ms.custom: "" ms.date: "03/29/2016" ms.prod: "sql-non-specified" ms.reviewer: "" ms.suite: "" ms.technology: - "database-engine" ms.tgt_pltfrm: "" ms.topic: "language-reference" f1_keywords: - "SYS.SP_QUERY_STORE_FORCE_PLAN" - "SP_QUERY_STORE_FORCE_PLAN" - "SYS.SP_QUERY_STORE_FORCE_PLAN_TSQL" - "SP_QUERY_STORE_FORCE_PLAN_TSQL" dev_langs: - "TSQL" helpviewer_keywords: - "sys.sp_query_store_force_plan" - "sp_query_store_force_plan" ms.assetid: 0068f258-b998-4e4e-b47b-e375157c8213 caps.latest.revision: 8 author: "BYHAM" ms.author: "rickbyh" manager: "jhubbard" --- # sp_query_store_force_plan (Transact-SQL) [!INCLUDE[tsql-appliesto-ss2016-asdb-xxxx-xxx_md](../../includes/tsql-appliesto-ss2016-asdb-xxxx-xxx-md.md)] Enables forcing a particular plan for a particular query. When a plan is forced for a particular query, every time [!INCLUDE[ssNoVersion](../../includes/ssnoversion-md.md)] encounters the query, it tries to force the plan in the optimizer. If plan forcing fails, a XEvent is fired and the optimizer is instructed to optimize in the normal way. ![Topic link icon](../../database-engine/configure-windows/media/topic-link.gif "Topic link icon") [Transact-SQL Syntax Conventions](../../t-sql/language-elements/transact-sql-syntax-conventions-transact-sql.md) ## Syntax ``` sp_query_store_force_plan [ @query_id = ] query_id , [ @plan_id = ] plan_id [;] ``` ## Arguments [ **@query_id =** ] *query_id* Is the id of the query. *query_id* is a **bigint**, with no default. [ **@plan_id =** ] *plan_id* Is the id of the query plan to be forced. *plan_id* is a **bigint**, with no default. ## Return Code Values 0 (success) or 1 (failure) ## Remarks ## Permissions Requires the **EXECUTE** permission on the database, and **INSERT**, **UPDATE**, and **DELETE** permission on the query store catalog views. ## Examples The following example returns information about the queries in the query store. ``` SELECT Txt.query_text_id, Txt.query_sql_text, Pl.plan_id, Qry.* FROM sys.query_store_plan AS Pl JOIN sys.query_store_query AS Qry ON Pl.query_id = Qry.query_id JOIN sys.query_store_query_text AS Txt ON Qry.query_text_id = Txt.query_text_id ; ``` After you identify the query_id and plan_id that you want to force, use the following example to force the query to use a plan. ``` EXEC sp_query_store_force_plan 3, 3; ``` ## See Also [sp_query_store_remove_plan (Transct-SQL)](../../relational-databases/system-stored-procedures/sp-query-store-remove-plan-transct-sql.md) [sp_query_store_remove_query (Transact-SQL)](../../relational-databases/system-stored-procedures/sp-query-store-remove-query-transact-sql.md) [sp_query_store_unforce_plan (Transact-SQL)](../../relational-databases/system-stored-procedures/sp-query-store-unforce-plan-transact-sql.md) [Query Store Catalog Views (Transact-SQL)](../../relational-databases/system-catalog-views/query-store-catalog-views-transact-sql.md) [Monitoring Performance By Using the Query Store](../../relational-databases/performance/monitoring-performance-by-using-the-query-store.md) [sp_query_store_reset_exec_stats (Transact-SQL)](../../relational-databases/system-stored-procedures/sp-query-store-reset-exec-stats-transact-sql.md) [sp_query_store_flush_db (Transact-SQL)](../../relational-databases/system-stored-procedures/sp-query-store-flush-db-transact-sql.md)