sp_control_plan_guide (Transact-SQL)

S’applique à : ouiSQL Server (toutes les versions prises en charge)

Supprime, active ou désactive un repère de plan.

Icône du lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

  
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 '
Spécifie le repère de plan à supprimer, activer ou désactiver. plan_guide_name est résolue dans la base de données actuelle. S’il n’est pas spécifié, plan_guide_name la valeur par défaut est null.

DROP
Supprime le repère de plan spécifié par plan_guide_name. Après la suppression d'un repère de plan, les exécutions futures d'une requête auparavant filtrée par le repère de plan ne sont plus influencées par ce repère de plan.

DROP ALL
Supprime tous les repères de plan dans la base de données actuelle. N'plan_guide_name ne peut pas être spécifié lorsque l’instruction DROP all est spécifiée.

DISABLE
Désactive le repère de plan spécifié par plan_guide_name. Après la désactivation d'un repère de plan, les exécutions futures d'une requête auparavant filtrée par le repère de plan ne sont plus influencées par ce repère de plan.

DISABLE ALL
Désactive tous les repères de plan dans la base de données actuelle. N'plan_guide_name ne peut pas être spécifié lorsque Disable All est spécifié.

ENABLE
Active le repère de plan spécifié par plan_guide_name. Une fois activé, un repère de plan peut être associé à une requête admissible. Par défaut, les repères de plan sont activés au moment de leur création.

ENABLE ALL
Active tous les repères de plan dans la base de données actuelle. N'plan_guide_name' ne peut pas être spécifié lorsque enable All 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 plan ne sont pas disponibles dans toutes les éditions de Microsoft SQL Server . Pour obtenir la liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2016. Toutefois, vous pouvez exécuter sp_control_plan_guide avec l’option DROP ou DROP all dans n’importe quelle édition de SQL Server .

Autorisations

Pour exécuter sp_control_plan_guide sur un repère de plan de type Object (créé en spécifiant @type = ' Object ' ), vous devez disposer de l’autorisation ALTER sur l’objet référencé par le repère de plan. Tous les autres repères de plan nécessitent l'autorisation ALTER DATABASE.

Exemples

R. Suppression, activation ou désactivation d'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.  
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. Désactivation de tous les repères de plan dans la base de données actuelle

L'exemple qui suit désactive tous les repères de plan dans la base de données AdventureWorks2012.

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

Voir aussi

Moteur de base de données procédures stockées (Transact-SQL)
Procédures stockées système (Transact-SQL)
sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL)
Repères de plan