Поделиться через


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

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

Значок ссылки на разделСоглашения о синтаксисе в 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
    Удаляет все руководства плана из текущей базы данных. Если задан параметр DROP ALL, нельзя указывать аргумент **N'**plan_guide_name .
  • DISABLE
    Отключает руководство плана, заданное аргументом plan_guide_name. После отключения руководства плана будущее выполнение запроса, ранее соответствовавшего этому руководству плана, не затрагивается.
  • DISABLE ALL
    Отключает все руководства плана в текущей базе данных. Если задан параметр DISABLE ALL, нельзя указывать аргумент **N'**plan_guide_name .
  • ENABLE
    Включает руководство плана, заданное аргументом plan_guide_name. После включения руководства плана с ним может быть отождествлен соответствующий запрос. По умолчанию руководство плана включается во время создания.
  • ENABLE ALL
    Включает все руководства плана в текущей базе данных. Если задан параметр ENABLE ALL, нельзя указывать аргумент **N'plan_guide_name'****.

Замечания

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

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

Хранимую процедуру sp_control_plan_guide с параметрами DROP или DROP ALL можно выполнять во всех выпусках SQL Server 2005; тем не менее, все другие параметры доступны только в выпусках Standard и Enterprise.

Разрешения

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

Примеры

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

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

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

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

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

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

См. также

Справочник

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

Другие ресурсы

Оптимизация запросов в используемых приложениях с помощью руководств планов

Справка и поддержка

Получение помощи по SQL Server 2005