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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server нетБаза данных SQL AzureнетХранилище данных SQL AzureнетParallel Data WarehouseAPPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Удаляет, включает или отключает структуру плана.Drops, enables, or disables a plan guide.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

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

АргументыArguments

N' plan_guide_name "N' plan_guide_name '
Задает структуру плана, предназначенную к удалению, включению или отключению.Specifies the plan guide that is being dropped, enabled, or disabled. plan_guide_name разрешается в текущей базе данных.plan_guide_name is resolved to the current database. Если не указан, plan_guide_name по умолчанию имеет значение NULL.If not specified, plan_guide_name defaults to NULL.

DROPDROP
Удаляет структуру плана, заданную аргументом plan_guide_name.Drops the plan guide specified by plan_guide_name. После удаления структуры плана будущее выполнение запроса, ранее соответствовавшего этой структуре плана, не затрагивается.After a plan guide is dropped, future executions of a query formerly matched by the plan guide are not influenced by the plan guide.

DROP ALLDROP ALL
Удаляет все структуры планов из текущей базы данных.Drops all plan guides in the current database. N' plan_guide_name не может быть указан, если задан DROP ALL.N'plan_guide_name cannot be specified when DROP ALL is specified.

DISABLEDISABLE
Отключает структуру плана, заданную аргументом plan_guide_name.Disables the plan guide specified by plan_guide_name. После отключения структуры плана будущее выполнение запроса, ранее соответствовавшего этой структуре плана, не затрагивается.After a plan guide is disabled, future executions of a query formerly matched by the plan guide are not influenced by the plan guide.

DISABLE ALLDISABLE ALL
Отключает все структуры планов в текущей базе данных.Disables all plan guides in the current database. N' plan_guide_name нельзя указать, когда DISABLE ALL задан.N'plan_guide_name cannot be specified when DISABLE ALL is specified.

ENABLEENABLE
Включает структуру плана, заданную аргументом plan_guide_name.Enables the plan guide specified by plan_guide_name. После включения структуры плана с ней может быть сопоставлен совпадающий запрос.A plan guide can be matched with an eligible query after it is enabled. По умолчанию структура плана включается во время создания.By default, plan guides are enabled at the time they are created.

ENABLE ALLENABLE ALL
Включает все структуры планов в текущей базе данных.Enables all plan guides in the current database. N' plan_guide_name " не может быть указан, если ВКЛЮЧИТЬ все указан.N'plan_guide_name' cannot be specified when ENABLE ALL is specified.

ПримечанияRemarks

Попытка удаления или изменения функции, хранимой процедуры или триггера DML, на которые имеется ссылка в структуре плана (как включенных, так и отключенных), приводит к ошибке.Trying to drop or modify a function, stored procedure, or DML trigger that is referenced by a plan guide, either enabled or disabled, causes an error.

Отключение уже отключенной структуры плана или включение включенной не имеет силы и не вызывает ошибки.Disabling a disabled plan guide or enabling an enabled plan guide has no effect and runs without error.

Структуры плана доступны не во всех выпусках MicrosoftMicrosoft SQL ServerSQL Server.Plans guides are not available in every edition of MicrosoftMicrosoftSQL ServerSQL Server. Сведения о функциях, поддерживаемых различными выпусками SQL ServerSQL Server, см. в статье Возможности, поддерживаемые различными выпусками SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Editions and Supported Features for SQL Server 2016. Тем не менее, можно выполнить sp_control_plan_guide с параметром DROP или DROP ALL в любом выпуске SQL ServerSQL Server.However, you can execute sp_control_plan_guide with the DROP or DROP ALL option in any edition of SQL ServerSQL Server.

РазрешенияPermissions

Для выполнения sp_control_plan_guide на структуру плана типа OBJECT (созданной с помощью @type = " объект " ) требуется разрешение ALTER на объект, упоминаемый в структуре плана.To execute sp_control_plan_guide on a plan guide of type OBJECT (created specifying @type =' OBJECT ' ) requires ALTER permission on the object that is referenced by the plan guide. Все остальные структуры планов требуют разрешения ALTER DATABASE.All other plan guides require ALTER DATABASE permission.

ПримерыExamples

A.A. Включение, отключение и удаление структур плановEnabling, disabling and dropping a plan guide

В следующем примере структура плана создается, отключается, включается и удаляется.The following example creates a plan guide, disables it, enables it, and drops it.

--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. Отключение всех структур планов в текущей базе данныхDisabling all plan guides in the current database

В следующем примере отключаются все структуры планов в базе данных AdventureWorks2012AdventureWorks2012.The following example disables all plan guides in the AdventureWorks2012AdventureWorks2012 database.

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

См. такжеSee Also

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