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 AdventureWorks2008R2;
GO
EXEC sp_recompile N'Sales.Customer';
GO