Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S'applique à :SQL Server
La sp_control_plan_guide procédure stockée système est utilisée pour supprimer, activer ou désactiver un repère de plan.
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_control_plan_guide
[ @operation = ] { N'DROP [ ALL ]' | N'DISABLE [ ALL ]' | N'ENABLE [ ALL ]' }
[ , [ @name = ] N'name' ]
[ ; ]
Arguments
[ @name = ] name
Spécifie le repère de plan à supprimer, activer ou désactiver.
@name est sysname, avec la valeur par défaut NULL.
@name est résolu dans la base de données active. Si ce n’est pas spécifié, @name valeurs NULLpar défaut .
[ @operation = ] { N’DROP [ ALL ]' | N’DISABLE [ ALL ]' | N’ENABLE [ ALL ]' }
Opération à effectuer sur le repère de plan spécifié dans @name. @operation est nvarchar(60), sans valeur par défaut.
DROPSupprime le repère de plan spécifié par @name. Une fois qu’un repère de plan est supprimé, les futures exécutions d’une requête précédemment mises en correspondance par le repère de plan ne sont pas influencées par le repère de plan.
DROP ALLSupprime tous les repères de plan dans la base de données actuelle. @name ne peut pas être spécifié quand
DROP ALLil est spécifié.DISABLEDésactive le repère de plan spécifié par @name. Une fois qu’un repère de plan est désactivé, les futures exécutions d’une requête précédemment mises en correspondance par le repère de plan ne sont pas influencées par le repère de plan.
DISABLE ALLDésactive tous les repères de plan dans la base de données actuelle. @name ne peut pas être spécifié quand
DISABLE ALLil est spécifié.ENABLEActive le repère de plan spécifié par @name. Un guide de plan peut être mis en correspondance avec une requête éligible une fois qu’elle est activée. Par défaut, les repères de plan sont activés au moment de leur création.
ENABLE ALLActive tous les repères de plan dans la base de données actuelle. @name ne peut pas être spécifié quand
ENABLE ALLil est spécifié.
Notes
Si vous tentez de supprimer ou de modifier une fonction, une procédure stockée ou un déclencheur DML référencé par un repère de plan, qu'il soit activé ou désactivé, une erreur se produit.
Désactiver un repère de plan désactivé, ou activer un repère de plan activé n'a pas d'effet et ne provoque pas d'erreur.
Les repères de plans ne sont pas disponibles dans chaque édition de SQL Server. Pour obtenir la liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Éditions et fonctionnalités prises en charge de SQL Server 2022. Toutefois, vous pouvez exécuter sp_control_plan_guide avec l’option ou DROP l’option DROP ALL dans n’importe quelle édition de SQL Server.
autorisations
L’exécution sp_control_plan_guide sur un repère de plan de type OBJECT (créé en spécifiant @type = '<object>') nécessite ALTER une autorisation sur l’objet référencé par le repère de plan. Tous les autres repères de plan nécessitent ALTER DATABASE une autorisation.
Exemples
R. Activer, désactiver et supprimer un repère de plan
L'exemple qui suit crée un repère de plan, le désactive, l'active et le supprime.
--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. Désactiver tous les repères de plan dans la base de données active
L'exemple qui suit désactive tous les repères de plan dans la base de données AdventureWorks2025.
USE AdventureWorks2022;
GO
EXECUTE sp_control_plan_guide N'DISABLE ALL';