sp_control_plan_guide (Transact-SQL)

Se aplica a:SQL Server

Quita, habilita o deshabilita una guía de plan.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

N'plan_guide_name'
Especifica la guía de plan que se va a quitar, habilitar o deshabilitar. plan_guide_name se resuelve en la base de datos actual. Si no se especifica, plan_guide_name el valor predeterminado es NULL.

DROP
Quita la guía de plan especificada por plan_guide_name. Una vez quitada una guía de plan, las ejecuciones futuras de una consulta que coincidía anteriormente con la guía de plan no se ven afectadas por dicha guía de plan.

DROP ALL
Quita todas las guías de plan de la base de datos actual. No se puede especificar N'plan_guide_name cuando se especifica DROP ALL.

DISABLE
Deshabilita la guía de plan especificada por plan_guide_name. Una vez deshabilitada una guía de plan, las ejecuciones futuras de una consulta que coincidía anteriormente con la guía de plan no se ven afectadas por dicha guía de plan.

DISABLE ALL
Deshabilita todas las guías de plan de la base de datos actual. No se puede especificar N'plan_guide_name cuando se especifica DISABLE ALL.

ENABLE
Habilita la guía de plan especificada por plan_guide_name. Una guía de plan puede coincidir con una consulta apta después de ser habilitada. De manera predeterminada, las guías de plan se habilitan en el momento en que se crean.

ENABLE ALL
Habilita todas las guías de plan de la base de datos actual. No se puede especificar N'plan_guide_name**'**cuando se especifica ENABLE ALL.

Comentarios

Se producirá un error si se intenta quitar o modificar una función, procedimiento almacenado o desencadenador DML al que una guía de plan, habilitada o deshabilitada, haga referencia.

Al deshabilitar una guía de plan deshabilitada o habilitar una guía de plan habilitada, no se produce ningún cambio o error.

Las guías de planes no están disponibles en todas las ediciones de Microsoft SQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL Server, consulte Ediciones y características admitidas de SQL Server 2022. Sin embargo, puede ejecutar sp_control_plan_guide con la opción DROP o DROP ALL en cualquier edición de SQL Server.

Permisos

Para ejecutar sp_control_plan_guide en una guía de plan de tipo OBJECT (creada especificando @type ='OBJECT' ) requiere el permiso ALTER en el objeto al que hace referencia la guía de plan. Todas las demás guías de plan requieren el permiso ALTER DATABASE.

Ejemplos

A Habilitar, deshabilitar y quitar una guía de plan

El ejemplo siguiente crea una guía de plan, la deshabilita, la habilita y la quita.

--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. Deshabilitar todas las guías de plan de la base de datos actual.

En el ejemplo siguiente se deshabilitan todas las guías de plan de la base de datos AdventureWorks2022.

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

Consulte también

procedimientos almacenados de Motor de base de datos (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL)
Guías de plan