sp_recompile (Transact-SQL)

ストアド プロシージャ、トリガー、およびユーザー定義関数が次回実行時に再コンパイルされるようにします。 そのために、プロシージャ キャッシュから既存のプランを削除して、プロシージャまたはトリガーを次回実行するときに新しいプランが作成されるようにします。 SQL Server Profiler コレクションでは、SP:Recompile イベントではなく SP:CacheInsert イベントがログに記録されます。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

sp_recompile [ @objname = ] 'object'

引数

  • [ @objname= ] 'object'
    現在のデータベースにあるストアド プロシージャ、トリガー、テーブル、ビュー、またはユーザー定義関数の修飾名または非修飾名を指定します。 object のデータ型は nvarchar(776) で、既定値はありません。 object がストアド プロシージャ、トリガー、またはユーザー定義関数の名前である場合、そのストアド プロシージャ、トリガー、または関数は次回実行時に再コンパイルされます。 object がテーブルまたはビューの名前である場合、そのテーブルまたはビューを参照するすべてのストアド プロシージャ、トリガー、またはユーザー定義関数は次回実行時に再コンパイルされます。

リターン コード値

0 (成功) または 0 以外の数値 (失敗)

説明

sp_recompile は、現在のデータベース内でのみオブジェクトを検索します。

ストアド プロシージャ、トリガーおよびユーザー定義関数が使用するクエリは、コンパイル時にだけ最適化されます。 統計に影響を与えるインデックスまたは他の変更がデータベースに加えられると、コンパイルされたストアド プロシージャ、トリガーおよびユーザー定義関数の効率が低下することがあります。 そのテーブルに作用するストアド プロシージャ、トリガー、およびユーザー定義関数を再コンパイルすることにより、クエリを再び最適化できます。

注意

SQL Server では、ストアド プロシージャ、トリガー、およびユーザー定義関数が必要に応じて自動的に再コンパイルされます。

権限

指定したオブジェクトに対する ALTER 権限が必要です。

使用例

次の例では、Customer テーブルを対象とするストアド プロシージャ、トリガー、およびユーザー定義関数が次回実行時に再コンパイルされます。

USE AdventureWorks2012;
GO
EXEC sp_recompile N'Sales.Customer';
GO

関連項目

参照

CREATE PROCEDURE (Transact-SQL)

CREATE TRIGGER (Transact-SQL)

システム ストアド プロシージャ (Transact-SQL)