Megosztás a következőn keresztül:


sp_recompile (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

A következő futtatáskor újra kompetálják a tárolt eljárásokat, triggereket és felhasználó által definiált függvényeket. Ezt úgy éri el, hogy a meglévő tervet leürti az eljárás gyorsítótárából, így a következő alkalommal, amikor az eljárás vagy trigger lefuttatják, új tervet kell létrehozni. Egy SQL Server Profiler gyűjteményben az esemény SP:CacheInsert a történt helyett SP:Recompileaz esemény naplózódik.

Transact-SQL szintaxis konvenciók

Szemantika

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

Arguments

[ @objname = ] N'object'

Az aktuális adatbázisban tárolt eljárás, trigger, tábla, nézet vagy felhasználó által definiált függvény minősített vagy minősítetlen neve. @objnamenvarchar(776), alapértelmezett nélkül.

  • Ha @objname egy tárolt eljárás, trigger vagy felhasználó által definiált függvény neve, akkor a tárolt eljárás, trigger vagy függvény újra kompetálja a következő futtatáskor.

  • Ha @objname egy tábla vagy nézet neve, akkor az összes tárolt eljárás, trigger vagy felhasználó által definiált függvény, amely a táblára vagy nézetre hivatkozik, a következő futtatáskor újra fordítva lesz.

Kódértékek visszaadása

0 (sikeres) vagy nemero szám (hiba).

Megjegyzések

sp_recompile csak az aktuális adatbázisban keres objektumot.

A tárolt eljárások, triggerek és felhasználó által definiált függvények által használt lekérdezések csak akkor vannak optimalizálva, ha fordították őket. Ahogy indexeket vagy egyéb statisztikákat érintő változtatásokat hajtanak végre az adatbázisban, a lefordított tárolt eljárások, triggerek és felhasználó által definiált függvények hatékonyságát veszíthetik. Ha újra kompoziálod a tárolt eljárásokat és a triggereket, amelyek egy asztalon hatnak, újraoptimalizálhatod a lekérdezéseket.

A tárolt eljárás proaktív végrehajtása általában felesleges. Az SQL Server automatikusan újrafordítja a tárolt eljárásokat, triggereket és felhasználó által definiált funkciókat, ha előnyös. Számos oka lehet az adatbázis motornak, hogy újrafordítja az objektumokat. Leggyakrabban az automatikus újrafordítás az alapul szolgáló kardinalitásbecslés változását követi automatikus vagy manuális statisztikai frissítések miatt.

Egy tárolt eljárás újrafordítása minden végrehajtással az egyik kevésbé hatékony módja a paraméterezés által okozott lekérdezési tervproblémák kezelésének. Az SQL Server 2022-ben (16.x) bevezetett Parameter Sensitive Plan optimalizáció funkció automatikusan próbálja enyhíteni ezt a problémát. Korábbi verziókban a végrehajtás helyett sp_recompile a következő lépéseket kell figyelembe venni:

Permissions

A megadott objektumon ALTER engedélyt igényel.

Példák

A következő példa miatt a táblán működő tárolt eljárásokat, triggereket és felhasználó által definiált függvényeket Sales.Customer újra fordítják a következő futtatásukkor.

USE AdventureWorks2022;
GO

EXECUTE sp_recompile N'Sales.Customer';
GO