Sdílet prostřednictvím


sp_recompile (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Způsobí, že uložené procedury, triggery a uživatelem definované funkce budou při dalším spuštění znovu zkompilovány. Dělá to tak, že vyřadí existující plán z cache procedur, čímž vynutí vytvoření nového plánu při dalším spuštění procedury nebo spouštěče. V kolekci SQL Server Profiler se zaznamenává událost SP:CacheInsert místo události SP:Recompile.

Transact-SQL konvence syntaxe

Syntaxe

sp_recompile [ @objname = ] N'object'
[ ; ]

Arguments

[ @objname = ] N'objekt'

Kvalifikovaný nebo nekvalifikovaný název uložené procedury, spouštěče, tabulky, zobrazení nebo uživatelem definované funkce v aktuální databázi. @objname je nvarchar(776), bez defaultu.

  • Pokud je @objname název uložené procedury, triggeru nebo uživatelem definované funkce, uložená procedura, trigger nebo funkce bude při dalším spuštění znovu zkompilována.

  • Pokud je @objname název tabulky nebo pohledu, všechny uložené procedury, triggery nebo uživatelem definované funkce, které odkazují na tabulku nebo pohled, budou při dalším spuštění znovu zkompilovány.

Hodnoty návratového kódu

0 (úspěch) nebo nenulové číslo (selhání).

Poznámky

sp_recompile hledá objekt pouze v aktuální databázi.

Dotazy používané uloženými procedurami, triggery a uživatelsky definovanými funkcemi jsou optimalizovány pouze při jejich kompilaci. Jak jsou do databáze prováděny indexy nebo jiné změny ovlivňující statistiky, mohou zkompilované uložené procedury, spouštěče a uživatelem definované funkce ztratit efektivitu. Překompilováním uložených procedur a spouštěčů, které působí na tabulce, můžete dotazy znovu optimalizovat.

Proaktivní provádění této uložené procedury obvykle není nutné. SQL Server automaticky překompiluje uložené procedury, triggery a uživatelem definované funkce, když je to výhodné. Existuje několik důvodů, proč by databázový engine mohl zvolit rekompilaci objektů. Nejčastěji automatická rekompilace následuje po změnách základního odhadu kardinálnosti způsobených automatickými nebo ručními aktualizacemi statistik.

Překompilování uloženého postupu při každém provedení je jedním z méně efektivních způsobů, jak řešit problémy s plánem dotazů způsobené parametrizací. Funkce optimalizace Parameter Sensitive Plan, zavedená v SQL Server 2022 (16.x), se snaží tento problém automaticky zmírnit. V předchozích verzích místo volání sp_recompile při každém provedení zvažte:

Povolení

Vyžaduje povolení ALTERu na specifikovaný objekt.

Examples

Následující příklad způsobí, že uložené procedury, triggery a uživatelem definované funkce, které působí na tabulce Sales.Customer , budou při dalším spuštění znovu zkompilovány.

USE AdventureWorks2022;
GO

EXECUTE sp_recompile N'Sales.Customer';
GO