Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-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:
- Csatoljuk a WITH RECOMPILE opciót a lekérdezéshez, ami kódváltoztatást igényel.
- Alkalmazd ezt
WITH RECOMPILEa lehetőséget egy tervútmutatóval. - Alkalmazd ezt
WITH RECOMPILEa lehetőséget egy Query Store tipptel anélkül, hogy kódváltoztatást végeznél. - További információért lásd: Paraméterérzékeny tervproblémákkal kapcsolatos lekérdezések megoldása.
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