sp_control_plan_guide を (TRANSACT-SQL)sp_control_plan_guide (Transact-SQL)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

削除を有効にすると、またはプラン ガイドを無効にします。Drops, enables, or disables a plan guide.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

  
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 'N' plan_guide_name '
削除するか、有効または無効にするプラン ガイドを指定します。Specifies the plan guide that is being dropped, enabled, or disabled. plan_guide_nameは、現在のデータベースに解決されます。plan_guide_name is resolved to the current database. 指定しない場合、 plan_guide_name既定値は NULL です。If not specified, plan_guide_name defaults to NULL.

DROPDROP
指定されたプラン ガイドを削除plan_guide_nameします。Drops the plan guide specified by plan_guide_name. プラン ガイドを削除した後、プラン ガイドによって一致していたクエリを将来実行プラン ガイドは影響されません。After a plan guide is dropped, future executions of a query formerly matched by the plan guide are not influenced by the plan guide.

DROP ALLDROP ALL
現在のデータベースのすべてのプラン ガイドを削除します。Drops all plan guides in the current database. N' plan_guide_name DROP ALL が指定されると指定することはできません。N'plan_guide_name cannot be specified when DROP ALL is specified.

DISABLEDISABLE
指定したプラン ガイドを無効にします。 plan_guide_nameします。Disables the plan guide specified by plan_guide_name. プラン ガイドが無効になった後は、そのプラン ガイドに以前一致していたクエリを実行しても、そのプラン ガイドによる影響は受けません。After a plan guide is disabled, future executions of a query formerly matched by the plan guide are not influenced by the plan guide.

DISABLE ALLDISABLE ALL
現在のデータベース内のすべてのプラン ガイドを無効にします。Disables all plan guides in the current database. N' plan_guide_name DISABLE ALL が指定されると指定することはできません。N'plan_guide_name cannot be specified when DISABLE ALL is specified.

有効にします。ENABLE
指定したプラン ガイドを有効plan_guide_nameします。Enables the plan guide specified by plan_guide_name. プラン ガイドが有効になった後は、そのプラン ガイドを適切なクエリと照合できます。A plan guide can be matched with an eligible query after it is enabled. 既定では、プラン ガイドは、作成時に有効にします。By default, plan guides are enabled at the time they are created.

ENABLE ALLENABLE ALL
現在のデータベース内のすべてのプラン ガイドを有効にします。Enables all plan guides in the current database. N' plan_guide_name ' ENABLE ALL を指定すると指定することはできません。N'plan_guide_name' cannot be specified when ENABLE ALL is specified.

コメントRemarks

有効、無効にする場合のどちらでも、そのプラン ガイドで参照されている関数、ストアド プロシージャ、または 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.

無効なプラン ガイドを無効にする場合や、有効なプラン ガイドを有効にする場合は影響は生じず、エラーなしで実行できます。Disabling a disabled plan guide or enabling an enabled plan guide has no effect and runs without error.

プラン ガイドはすべてのエディションで使用できないMicrosoftMicrosoftSQL ServerSQL Serverします。Plans guides are not available in every edition of MicrosoftMicrosoftSQL ServerSQL Server. SQL ServerSQL Server の各エディションでサポートされる機能の一覧については、「Editions and Supported Features for SQL Server 2016」 (SQL Server 2016 のエディションとサポートされる機能) を参照してください。For a list of features that are supported by the editions of SQL ServerSQL Server, see Editions and Supported Features for SQL Server 2016. ただし、実行できます。 sp_control_plan_guideの任意のエディションで DROP または DROP ALL オプションを使用してSQL ServerSQL Serverします。However, you can execute sp_control_plan_guide with the DROP or DROP ALL option in any edition of SQL ServerSQL Server.

アクセス許可Permissions

実行するsp_control_plan_guide OBJECT 型のプラン ガイドで (指定して作成 @type =' オブジェクト ' ) オブジェクトに対する ALTER 権限が必要ですプラン ガイドによって参照されます。To execute sp_control_plan_guide on a plan guide of type OBJECT (created specifying @type =' OBJECT ' ) requires ALTER permission on the object that is referenced by the plan guide. その他すべてのプラン ガイドでは、ALTER DATABASE 権限が必要です。All other plan guides require ALTER DATABASE permission.

使用例Examples

A.A. プラン ガイドを無効にし、有効にした後、削除するEnabling, disabling and dropping a plan guide

次の例ではプラン ガイドを作成し、それを無効にし、有効にした後、削除します。The following example creates a plan guide, disables it, enables it, and drops it.

--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.B. 現在のデータベース内のすべてのプラン ガイドを無効にします。Disabling all plan guides in the current database

次の例では、AdventureWorks2012AdventureWorks2012 データベースのすべてのプラン ガイドを無効にします。The following example disables all plan guides in the AdventureWorks2012AdventureWorks2012 database.

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

関連項目See Also

データベース エンジン ストアド プロシージャ(TRANSACT-SQL) Database Engine Stored Procedures (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL) System Stored Procedures (Transact-SQL)
sp_create_plan_guide (Transact-SQL) sp_create_plan_guide (Transact-SQL)
sys.plan_guides (Transact-SQL) sys.plan_guides (Transact-SQL)
プラン ガイドPlan Guides