계획 지침 사용 또는 사용 안 함Enable or Disable a Plan Guide

SQL Server 2017SQL Server 2017 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL에서 계획 지침을 사용하거나 사용하지 않도록 설정할 수 있습니다.You can disable and enable plan guides in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. 데이터베이스에 있는 단일 계획 지침 또는 모든 계획 지침을 사용하거나 사용하지 않도록 설정할 수 있습니다.Either a single plan guides or all plan guides in a database can be enabled or disabled.

항목 내용In This Topic

시작하기 전 주의 사항 Before You Begin

제한 사항 Limitations and Restrictions

  • 활성화 여부에 관계없이 계획 지침에서 참조하는 함수, 저장 프로시저 또는 DML 트리거를 삭제하거나 수정하려고 하면 오류가 발생합니다.Trying to drop or modify a function, stored procedure, or DML trigger that is referenced by a plan guide, either enabled or disabled, causes an error. 위에 나열된 개체를 삭제하거나 수정하기 전에 항상 종속성을 확인합니다.Always check for dependencies before dropping or modifying any of the objects listed above.

  • 비활성화된 계획 지침을 비활성화하거나 활성화된 계획 지침을 활성화하면 아무런 영향을 미치지 않고 오류 없이 실행됩니다.Disabling a disabled plan guide or enabling an enabled plan guide has no effect and runs without error.

보안 Security

사용 권한 Permissions

OBJECT 계획 지침을 사용하거나 사용하지 않도록 설정하려면 계획 지침에서 참조되는 개체(예: 함수, 저장 프로시저)에 대한 변경 권한이 있어야 합니다.Disabling or enabling an OBJECT plan guide requires ALTER permission on the object (for example: function, stored procedure) that is referenced by the plan guide. 다른 모든 계획 지침에는 ALTER DATABASE 권한이 필요합니다.All other plan guides require ALTER DATABASE permission.

SQL Server Management Studio 사용 Using SQL Server Management Studio

계획 지침을 사용하거나 사용하지 않도록 설정하려면To disable or enable a plan guide

  1. 더하기 기호를 클릭하여 계획 지침을 사용하거나 사용하지 않도록 설정할 데이터베이스를 확장한 다음 더하기 기호를 클릭하여 프로그래밍 기능 폴더를 확장합니다.Click the plus sign to expand the database in which you want to disable or enable a plan guide, and then click the plus sign to expand the Programmability folder.

  2. 더하기 기호를 클릭하여 계획 지침 폴더를 확장합니다.Click the plus sign to expand the Plan Guides folder.

  3. 사용하거나 사용하지 않도록 설정할 계획 지침을 마우스 오른쪽 단추로 클릭하고 사용 안 함 또는 사용을 선택합니다.Right-click the plan guide you want to disable or enable and select either Disable or Enable.

  4. 계획 지침 사용 안 함 또는 계획 지침 사용 대화 상자에서 선택한 작업이 성공했는지 확인한 다음 닫기를 클릭합니다.In either the Disable Plan Guide or Enable Plan Guide dialog box, verify that the chosen action was successful and then click Close.

데이터베이스의 모든 계획 지침을 사용하거나 사용하지 않도록 설정하려면To disable or enable all plan guides in a database

  1. 더하기 기호를 클릭하여 계획 지침을 사용하거나 사용하지 않도록 설정할 데이터베이스를 확장한 다음 더하기 기호를 클릭하여 프로그래밍 기능 폴더를 확장합니다.Click the plus sign to expand the database in which you want to disable or enable a plan guide, and then click the plus sign to expand the Programmability folder.

  2. 계획 지침 폴더를 마우스 오른쪽 단추로 클릭한 다음 모두 사용 또는 모두 사용 안 함을 선택합니다.Right-click the Plan Guides folder and then select either Enable All or Disable All.

  3. 모든 계획 지침 사용 안 함 또는 모든 계획 지침 사용 대화 상자에서 선택한 작업이 성공했는지 확인한 다음 닫기를 클릭합니다.In either the Disable all Plan Guides or Enable all Plan Guides dialog box, verify that the chosen action was successful and then click Close.

Transact-SQL 사용 Using Transact-SQL

계획 지침을 사용하거나 사용하지 않도록 설정하려면To disable or enable a plan guide

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    --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''))';  
    --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  
    

데이터베이스의 모든 계획 지침을 사용하거나 사용하지 않도록 설정하려면To disable or enable all plan guides in a database

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine인스턴스에 연결합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.On the Standard bar, click New Query.

  3. 다음 예를 복사하여 쿼리 창에 붙여 넣고 실행을 클릭합니다.Copy and paste the following example into the query window and click Execute.

    --Disable all plan guides in the database.  
    EXEC sp_control_plan_guide N'DISABLE ALL';  
    GO  
    --Enable all plan guides in the database.  
    EXEC sp_control_plan_guide N'ENABLE ALL';  
    GO  
    

    자세한 내용은 sp_control_plan_guide(Transact-SQL)를 참조하세요.For more information, see sp_control_plan_guide (Transact-SQL).