sp_control_plan_guide (Transact-SQL)
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 como la base de datos actual. Si no especifica, el valor predeterminado de plan_guide_name 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.
Notas
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.
Puede ejecutar sp_control_plan_guide con la opción DROP o DROP ALL en cualquier versión de Microsoft SQL Server 2005; sin embargo, todas las demás opciones están disponibles solamente en las versiones Standard y Enterprise.
Permisos
Para ejecutar sp_control_plan_guide en una guía de plan de tipo OBJECT (creada especificando @type ='OBJECT'), se 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 AdventureWorks
.
USE AdventureWorks;
GO
EXEC sp_control_plan_guide N'DISABLE ALL';
Vea también
Referencia
Procedimientos almacenados del motor de base de datos (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides
Otros recursos
Optimizar consultas en aplicaciones implementadas mediante guías de plan