sp_control_plan_guide(Transact-SQL)
계획 지침을 삭제하거나 활성화하거나 비활성화합니다.
- N'plan_guide_name'
-
삭제되거나 활성화되거나 비활성화되는 계획 지침을 지정합니다. plan_guide_name은 현재 데이터베이스로 확인됩니다. 지정하지 않으면 plan_guide_name은 기본적으로 NULL이 됩니다.
- DROP
-
plan_guide_name에 지정된 계획 지침을 삭제합니다. 계획 지침이 삭제된 후 이전에 이 계획 지침에 맞춘 쿼리를 실행할 경우 이 계획 지침의 영향을 받지 않습니다.
- DROP ALL
-
현재 데이터베이스에 있는 모든 계획 지침을 삭제합니다. DROP ALL이 지정되면 N'plan_guide_name 을 지정할 수 없습니다.
- DISABLE
-
plan_guide_name에 지정된 계획 지침을 비활성화합니다. 계획 지침이 비활성화된 후 이전에 이 계획 지침에 맞춘 쿼리를 실행할 경우 이 계획 지침의 영향을 받지 않습니다.
- DISABLE ALL
-
현재 데이터베이스에 있는 모든 계획 지침을 비활성화합니다. DISABLE ALL이 지정되면 N'plan_guide_name 을 지정할 수 없습니다.
- ENABLE
-
plan_guide_name에 지정된 계획 지침을 활성화합니다. 계획 지침을 활성화하면 적합한 쿼리에 맞출 수 있습니다. 기본적으로 계획 지침은 만들어질 때 활성화됩니다.
- ENABLE ALL
-
현재 데이터베이스에 있는 모든 계획 지침을 활성화합니다. ENABLE ALL이 지정되면 N'plan_guide_name'을 지정할 수 없습니다.
1. 계획 지침 활성화, 비활성화 및 삭제
다음 예에서는 계획 지침을 만들고 비활성화하고 활성화하고 삭제합니다.
--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';
2. 현재 데이터베이스에 있는 모든 계획 지침 비활성화
다음 예에서는 AdventureWorks 데이터베이스의 모든 계획 지침을 비활성화합니다.
USE AdventureWorks; GO EXEC sp_control_plan_guide N'DISABLE ALL';
