Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения:SQL Server
Системная sp_control_plan_guide хранимая процедура используется для удаления, включения или отключения руководства по плану.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_control_plan_guide
[ @operation = ] { N'DROP [ ALL ]' | N'DISABLE [ ALL ]' | N'ENABLE [ ALL ]' }
[ , [ @name = ] N'name' ]
[ ; ]
Аргументы
[ @name = ] N'name'
Задает структуру плана, предназначенную к удалению, включению или отключению.
@name имеет имя sysname с значением по умолчаниюNULL.
@name разрешается в текущую базу данных. Если не указано, @name по умолчанию NULL.
[ @operation = ] { N'DROP [ ВСЕ ]' | N'DISABLE [ ВСЕ ]' | N'ENABLE [ ВСЕ ]' }
Операция, выполняемая в руководстве по плану, указанному в @name. @operation — nvarchar(60), без значения по умолчанию.
DROPУдаляет руководство по плану, указанное @name. После удаления руководства по плану будущие выполнение запроса, ранее соответствующего руководству плана, не влияет на руководство по плану.
DROP ALLУдаляет все структуры планов из текущей базы данных. @name не удается указать при
DROP ALLуказании.DISABLEОтключает руководство по плану, указанное @name. После отключения руководства по плану будущие выполнение запроса, ранее соответствующего руководству по плану, не зависит от руководства по плану.
DISABLE ALLОтключает все структуры планов в текущей базе данных. @name не удается указать при
DISABLE ALLуказании.ENABLEВключает руководство по плану, указанное @name. Руководство по плану можно сопоставить с соответствующим запросом после его включения. По умолчанию руководства по плану включены во время их создания.
ENABLE ALLВключает все структуры планов в текущей базе данных. @name не удается указать при
ENABLE ALLуказании.
Замечания
Попытка удаления или изменения функции, хранимой процедуры или триггера DML, на которые имеется ссылка в структуре плана (как включенных, так и отключенных), приводит к ошибке.
Отключение уже отключенной структуры плана или включение включенной не имеет силы и не вызывает ошибки.
Руководства по планам недоступны в каждом выпуске SQL Server. Список функций, поддерживаемых выпусками SQL Server, см. в выпусках и поддерживаемых функциях SQL Server 2022. Однако можно выполнить sp_control_plan_guide с DROP помощью любого выпуска SQL Server или DROP ALL параметра.
Разрешения
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.
EXECUTE 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.
EXECUTE sp_control_plan_guide N'DISABLE',
N'Guide3';
GO
--Enable the plan guide.
EXECUTE sp_control_plan_guide N'ENABLE',
N'Guide3';
GO
--Drop the plan guide.
EXECUTE sp_control_plan_guide N'DROP',
N'Guide3';
GO
B. Отключение всех руководств по плану в текущей базе данных
В следующем примере отключаются все структуры планов в базе данных AdventureWorks2025.
USE AdventureWorks2022;
GO
EXECUTE sp_control_plan_guide N'DISABLE ALL';