Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Systemlagrad sp_control_plan_guide procedur används för att ta bort, aktivera eller inaktivera en planguide.
Transact-SQL syntaxkonventioner
Syntax
sp_control_plan_guide
[ @operation = ] { N'DROP [ ALL ]' | N'DISABLE [ ALL ]' | N'ENABLE [ ALL ]' }
[ , [ @name = ] N'name' ]
[ ; ]
Arguments
[ @name = ] N'namn'
Specificerar den planguide som tas bort, aktiveras eller inaktiveras.
@name är sysname, med standardvärdet .NULL
@name upplöses till den aktuella databasen. Om det inte specificeras, @name som standard .NULL
[ @operation = ] { N'DROP [ ALLA ]' | N'INAKTIVERA [ ALLA ]' | N'AKTIVERA [ ALLA ]' }
Operationen som ska utföras enligt planguiden specificerad i @name. @operation är nvarchar(60), utan standard.
DROPSläpper planguiden som anges av @name. Efter att en planguide har tagits bort påverkas framtida utföranden av en fråga som tidigare matchades av planguiden inte av planguiden.
DROP ALLLägger bort alla planguider i den aktuella databasen. @name kan inte specificeras när
DROP ALLdet är specificerat.DISABLEInaktiverar planguiden som anges av @name. Efter att en planguide inaktiverats påverkas framtida utföranden av en fråga som tidigare matchades av planguiden inte av planguiden.
DISABLE ALLInaktiverar alla planguider i den aktuella databasen. @name kan inte specificeras när
DISABLE ALLdet är specificerat.ENABLEMöjliggör den planguide som anges av @name. En planguide kan matchas med en berättigad fråga efter att den aktiverats. Som standard är planguider aktiverade när de skapas.
ENABLE ALLAktiverar alla planguider i den aktuella databasen. @name kan inte specificeras när
ENABLE ALLdet är specificerat.
Anmärkningar
Att försöka släppa eller ändra en funktion, lagrad procedur eller DML-utlösare som refereras av en planguide, antingen aktiverad eller inaktiverad, orsakar ett fel.
Att inaktivera en inaktiverad planguide eller aktivera en aktiverad planguide har ingen effekt och fungerar utan fel.
Planguider finns inte i varje utgåva av SQL Server. En lista över funktioner som stöds av versionerna av SQL Server finns i Utgåvor och funktioner som stöds i SQL Server 2022. Du kan dock köra sp_control_plan_guide med DROP alternativet eller DROP ALL i vilken version av SQL Server som helst.
Permissions
Att köra sp_control_plan_guide på en planguide av typen OBJECT (skapad, @type = '<object>'specificerar ) kräver ALTER behörighet på objektet som referensen till i planguiden. Alla andra planguider kräver ALTER DATABASE tillstånd.
Examples
A. Aktivera, inaktivera och släpp en planguide
Följande exempel skapar en planguide, inaktiverar den, aktiverar den och tar bort den.
--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. Inaktivera alla planguider i den aktuella databasen
Följande exempel inaktiverar alla planguider i databasen AdventureWorks2025 .
USE AdventureWorks2022;
GO
EXECUTE sp_control_plan_guide N'DISABLE ALL';