共用方式為


sp_recompile (Transact-SQL)

在下次預存程序、觸發程序和使用者定義函數執行時,重新編譯它們。 其運作方式是從程序快取中卸除現有的計畫,以便強制在下次執行程序或觸發程序時建立新的計畫。 在 SQL Server Profiler 集合中,系統會記錄 SP:CacheInsert 事件而非 SP:Recompile 事件。

主題連結圖示 Transact-SQL 語法慣例

語法

sp_recompile [ @objname = ] 'object'

引數

  • [ @objname= ] 'object'
    目前資料庫中之預存程序、觸發程序、資料表、檢視表或使用者定義函數的限定或非限定名稱。 object 是 nvarchar(776),沒有預設值。 如果 object 是預存程序、觸發程序或使用者定義函數的名稱,下次預存程序、觸發程序或函數執行時,會重新編譯它們。 如果 object 是資料表或檢視表的名稱,下次參考這份資料表或檢視表的所有預存程序、觸發程序或使用者定義函數執行時,會重新編譯它們。

傳回碼值

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)