Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL 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.
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:
- Přidejte možnost WITH RECOMPILE k dotazu, což vyžaduje změnu kódu.
- Použijte
WITH RECOMPILEtuto možnost s plánem. - Použijte
WITH RECOMPILEtuto možnost pomocí nápovědy z Query Store bez nutnosti měnit kód. - Pro více informací viz Řešení dotazů s parametrově citlivými plánovými problémy.
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
Související obsah
- CREATE PROCEDURE (Transact-SQL)
- VYTVOŘIT SPOUŠŤ (Transact-SQL)
- uložené procedury systému (Transact-SQL)
- SQL:StmtRecompile Event Class
- Překompilujte uloženou proceduru