Хранимая процедура 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
Другие ресурсы
Оптимизация запросов в используемых приложениях с помощью руководств планов