適用対象:SQL Server
Azure SQL データベース
Azure SQL Managed Instance
SQL Server では、SQL Server Management Studio または Transact-SQL を使ってプラン ガイドを削除(ドロップ)できます。 Transact-SQLを使用すると、データベース内のすべてのプラン ガイドを削除することもできます。
このトピックの内容
作業を開始する準備:
プラン ガイドの削除に使用するもの:
始める前に
セキュリティ
アクセス許可
OBJECT プラン ガイドの削除には、プラン ガイドによって参照されるオブジェクト (関数、ストアド プロシージャなど) に対する ALTER 権限が必要です。 その他すべてのプラン ガイドでは、ALTER DATABASE 権限が必要です。
SQL Server Management Studio を使用する
プラン ガイドを削除するには
プラス記号をクリックして、削除するプラン ガイドのあるデータベースを展開し、プラス記号をクリックして [プログラミング] フォルダーを展開します。
プラス記号をクリックして [プラン ガイド] フォルダーを展開します。
削除するプラン ガイドを右クリックして、 [削除]をクリックします。
[オブジェクトの削除] ダイアログ ボックスで、正しいプラン ガイドが選択されていることを確認し、 [OK]をクリックします。
Transact-SQL の使用
単一のプラン ガイドを削除するには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。
--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 --Drop the plan guide. EXEC sp_control_plan_guide N'DROP', N'Guide3'; GO
データベース内のすべてのプラン ガイドを削除するには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。
USE AdventureWorks2022; GO EXEC sp_control_plan_guide N'DROP ALL'; GO
詳細については、「sp_control_plan_guide (Transact-SQL) 」を参照してください。