Хранимая процедура sp_control_plan_guide (Transact-SQL)

Применимо к:SQL Server

Удаляет, включает или отключает структуру плана.

Соглашения о синтаксисе Transact-SQL

Синтаксис

  
sp_control_plan_guide [ @operation = ] N'<control_option>'  
  [ , [ @name = ] N'plan_guide_name' ]  
  
<control_option>::=  
{   
    DROP   
  | DROP ALL  
  | DISABLE  
  | DISABLE ALL  
  | ENABLE   
  | ENABLE ALL  
}  

Аргументы

N'plan_guide_name'
Задает структуру плана, предназначенную к удалению, включению или отключению. plan_guide_name разрешается в текущую базу данных. Если значение не указано, plan_guide_name по умолчанию имеет значение NULL.

DROP
Удаляет руководство по плану, указанное plan_guide_name. После удаления структуры плана будущее выполнение запроса, ранее соответствовавшего этой структуре плана, не затрагивается.

DROP ALL
Удаляет все структуры планов из текущей базы данных. Не удается указать N'plan_guide_name при указании DROP ALL.

DISABLE
Отключает руководство по плану, указанное plan_guide_name. После отключения структуры плана будущее выполнение запроса, ранее соответствовавшего этой структуре плана, не затрагивается.

DISABLE ALL
Отключает все структуры планов в текущей базе данных. Не удается указать N'plan_guide_name при указании DISABLE ALL.

ВКЛЮЧЕНИЕ
Включает руководство по плану, указанное plan_guide_name. После включения структуры плана с ней может быть сопоставлен совпадающий запрос. По умолчанию структура плана включается во время создания.

ENABLE ALL
Включает все структуры планов в текущей базе данных. Не удается указать N'plan_guide_name*** при указании ENABLE ALL.

Замечания

Попытка удаления или изменения функции, хранимой процедуры или триггера DML, на которые имеется ссылка в структуре плана (как включенных, так и отключенных), приводит к ошибке.

Отключение уже отключенной структуры плана или включение включенной не имеет силы и не вызывает ошибки.

Руководства по планам недоступны в каждом выпуске Microsoft SQL Server. Список функций, поддерживаемых выпусками SQL Server, см. в выпусках и поддерживаемых функциях SQL Server 2022. Однако вы можете выполнить sp_control_plan_guide с параметром DROP или DROP ALL в любом выпуске SQL Server.

Разрешения

Чтобы выполнить sp_control_plan_guide в руководстве по плану типа OBJECT (созданном с указанием @type ='OBJECT' ) требуется разрешение ALTER для объекта, на который ссылается руководство по плану. Все остальные структуры планов требуют разрешения ALTER DATABASE.

Примеры

А. Включение, отключение и удаление структур планов

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

--Create a procedure on which to define the plan guide.  
IF OBJECT_ID(N'Sales.GetSalesOrderByCountry', N'P') IS NOT NULL  
    DROP PROCEDURE Sales.GetSalesOrderByCountry;  
GO  
CREATE PROCEDURE Sales.GetSalesOrderByCountry   
    (@Country nvarchar(60))  
AS  
BEGIN  
    SELECT *  
    FROM Sales.SalesOrderHeader AS h   
    INNER JOIN Sales.Customer AS c ON h.CustomerID = c.CustomerID  
    INNER JOIN Sales.SalesTerritory AS t ON c.TerritoryID = t.TerritoryID  
    WHERE t.CountryRegionCode = @Country;  
END  
GO  
--Create the plan guide.  
EXEC sp_create_plan_guide N'Guide3',  
    N'SELECT *  
    FROM Sales.SalesOrderHeader AS h   
    INNER JOIN Sales.Customer AS c ON h.CustomerID = c.CustomerID  
    INNER JOIN Sales.SalesTerritory AS t ON c.TerritoryID = t.TerritoryID  
    WHERE t.CountryRegionCode = @Country',  
    N'OBJECT',  
    N'Sales.GetSalesOrderByCountry',  
    NULL,  
    N'OPTION (OPTIMIZE FOR (@Country = N''US''))';  
GO  
--Disable the plan guide.  
EXEC sp_control_plan_guide N'DISABLE', N'Guide3';  
GO  
--Enable the plan guide.  
EXEC sp_control_plan_guide N'ENABLE', N'Guide3';  
GO  
--Drop the plan guide.  
EXEC sp_control_plan_guide N'DROP', N'Guide3';  

B. Отключение всех структур планов в текущей базе данных

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

USE AdventureWorks2022;  
GO  
EXEC sp_control_plan_guide N'DISABLE ALL';  

См. также

ядро СУБД хранимые процедуры (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL)
Руководства планов