sp_recompile (TRANSACT-SQL)sp_recompile (Transact-SQL)

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

ストアド プロシージャ、トリガー、およびユーザー定義関数が次回実行時に再コンパイルされるようにします。Causes stored procedures, triggers, and user-defined functions to be recompiled the next time that they are run. これは、次回作成する新しいプランをプロシージャ キャッシュから既存のプランを削除することにより、プロシージャまたはトリガーが実行されます。It does this by dropping the existing plan from the procedure cache forcing a new plan to be created the next time that the procedure or trigger is run. SQL Server プロファイラーSQL Server Profiler コレクションでは、SP:Recompile イベントではなく SP:CacheInsert イベントがログに記録されます。In a SQL Server プロファイラーSQL Server Profiler collection, the event SP:CacheInsert is logged instead of the event SP:Recompile.

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

構文Syntax

  
sp_recompile [ @objname = ] 'object'  

引数Arguments

[ @objname=] 'オブジェクト'[ @objname= ] 'object'
現在のデータベースにあるストアド プロシージャ、トリガー、テーブル、ビュー、またはユーザー定義関数の修飾名または非修飾名を指定します。The qualified or unqualified name of a stored procedure, trigger, table, view, or user-defined function in the current database. オブジェクトnvarchar (776) 、既定値はありません。object is nvarchar(776), with no default. 場合オブジェクトストアド プロシージャ、トリガー、またはユーザー定義関数、ストアド プロシージャ、トリガーの名前を指定しますまたは、次回実行する関数を再コンパイルされます。If object is the name of a stored procedure, trigger, or user-defined function, the stored procedure, trigger, or function will be recompiled the next time that it is run. 場合オブジェクトテーブルまたはビューでは、すべてのストアド プロシージャ、トリガーの名前を指定しますまたは、次回実行されるテーブルまたはビューを参照するユーザー定義関数を再コンパイルされます。If object is the name of a table or view, all the stored procedures, triggers, or user-defined functions that reference the table or view will be recompiled the next time that they are run.

リターン コードの値Return Code Values

0 (成功) または 0 以外の値の数 (失敗)0 (success) or a nonzero number (failure)

コメントRemarks

sp_recompile は、現在のデータベース内でのみオブジェクトを検索します。sp_recompile looks for an object in the current database only.

ストアド プロシージャ、トリガー、およびユーザー定義関数が使用するクエリは、コンパイル時にだけ最適化されます。The queries used by stored procedures, or triggers, and user-defined functions are optimized only when they are compiled. データベースにインデックスを追加したり、変更を加えたりすると、統計が変化するため、コンパイルされたストアド プロシージャ、トリガー、およびユーザー定義関数の効率が低下する場合があります。As indexes or other changes that affect statistics are made to the database, compiled stored procedures, triggers, and user-defined functions may lose efficiency. そのテーブルに作用するストアド プロシージャやトリガーを再コンパイルすることにより、クエリを再び最適化できます。By recompiling stored procedures and triggers that act on a table, you can reoptimize the queries.

注意

SQL ServerSQL Server 自動的にこれを行うことをお勧めときにストアド プロシージャ、トリガー、およびユーザー定義関数を再コンパイルします。automatically recompiles stored procedures, triggers, and user-defined functions when it is advantageous to do this.

アクセス許可Permissions

指定したオブジェクトに対する ALTER 権限が必要です。Requires ALTER permission on the specified object.

使用例Examples

次の例では、Customer テーブルを対象とするストアド プロシージャ、トリガー、およびユーザー定義関数が次回実行時に再コンパイルされます。The following example causes stored procedures, triggers, and user-defined functions that act on the Customer table to be recompiled the next time that they are run.

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

関連項目See Also

CREATE PROCEDURE (Transact-SQL) CREATE PROCEDURE (Transact-SQL)
CREATE TRIGGER (Transact-SQL) CREATE TRIGGER (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)System Stored Procedures (Transact-SQL)