sp_query_store_force_plan (Transact-SQL)

Применимо к: даSQL Server 2016 (13.x); и более поздние версии ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure

Включает принудительное применение определенного плана для конкретного запроса.

Если план принудительно используется для конкретного запроса, каждый раз при SQL Server возникновении запроса он пытается принудительно выполнить план в оптимизаторе запросов. Если форсирование плана завершается неудачей, запускается расширенное событие, и оптимизатор запросов подает запрос на оптимизацию обычным способом.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

sp_query_store_force_plan [ @query_id = ] query_id , [ @plan_id = ] plan_id [;]  

Аргументы

[ @query_id = ] query_id

Идентификатор запроса. query_id имеет тип bigint и не имеет значения по умолчанию.

[ @plan_id = ] plan_id

Идентификатор плана запроса, который необходимо принудительно применить. plan_id имеет тип bigint и не имеет значения по умолчанию.

Значения кода возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Remarks

Результирующий план выполнения, принудительно выполненный этой функцией, будет таким же, как и в случае принудительного запуска плана. Так как итоговый план может не совпадать с планом, указанным в параметре sp_query_store_force_plan , производительность планов может отличаться. В редких случаях разница в производительности может быть значительной и отрицательной. в этом случае администратор должен удалить принудительный план.

Разрешения

Требуется разрешение ALTER на базу данных.

Примеры

В следующем примере возвращаются сведения о запросах в хранилище запросов.

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 ;  

Определив query_id и plan_id, которые требуется форсировать, используйте следующий пример, чтобы принудительно использовать план в запросе.

EXEC sp_query_store_force_plan 3, 3;  

См. также:

sp_query_store_remove_plan (Transct SQL)
sp_query_store_remove_query (Transact-SQL)
sp_query_store_unforce_plan (Transact-SQL)
представления каталога хранилища запросов (Transact-SQL)
Мониторинг производительности с помощью хранилища запросов
sp_query_store_reset_exec_stats (Transact-SQL)
sp_query_store_flush_db (Transact-SQL)
Рекомендации по хранилищу запросов