Хранимая процедура 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, на которые имеется ссылка в структуре плана (как включенных, так и отключенных), приводит к ошибке.
Отключение уже отключенной структуры плана или включение включенной не имеет силы и не вызывает ошибки.
Структуры плана доступны не во всех выпусках Microsoft SQL Server. Список функций, поддерживаемых в разных выпусках SQL Server, см. в разделе Возможности, поддерживаемые различными выпусками SQL Server 2012. Однако процедуру 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';
Б.Отключение всех структур планов в текущей базе данных
В следующем примере отключаются все структуры планов в базе данных AdventureWorks2012 .
USE AdventureWorks2012;
GO
EXEC sp_control_plan_guide N'DISABLE ALL';
См. также
Справочник
Хранимые процедуры ядра СУБД (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL)