Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Zorgt ervoor dat opgeslagen procedures, triggers en door de gebruiker gedefinieerde functies opnieuw worden gecompileerd de volgende keer dat ze worden uitgevoerd. Dit gebeurt door het bestaande plan uit de procedurecache te verwijderen, waardoor er bij de volgende uitvoering van de procedure of trigger een nieuw plan wordt aangemaakt. In een SQL Server Profiler-collectie wordt het event SP:CacheInsert gelogd in plaats van het event SP:Recompile.
Transact-SQL syntaxis-conventies
Syntaxis
sp_recompile [ @objname = ] N'object'
[ ; ]
Arguments
[ @objname = ] Geen probleem'
De gekwalificeerde of niet-gekwalificeerde naam van een opgeslagen procedure, trigger, tabel, weergave of door de gebruiker gedefinieerde functie in de huidige database. @objname is nvarchar(776), zonder standaard.
Als @objname de naam is van een opgeslagen procedure, trigger of door de gebruiker gedefinieerde functie, wordt de opgeslagen procedure, trigger of functie de volgende keer opnieuw gecompileerd.
Als @objname de naam is van een tabel of weergave, worden alle opgeslagen procedures, triggers of door de gebruiker gedefinieerde functies die naar de tabel of weergave verwijzen, de volgende keer opnieuw gecompileerd.
Codewaarden retourneren
0 (geslaagd) of een niet-nulnummer (fout).
Opmerkingen
sp_recompile zoekt alleen naar een object in de huidige database.
De queries die worden gebruikt door stored procedures, of triggers, en door de gebruiker gedefinieerde functies worden alleen geoptimaliseerd wanneer ze worden gecompileerd. Naarmate indexen of andere wijzigingen die statistieken beïnvloeden aan de database worden doorgevoerd, kunnen gecompileerde opgeslagen procedures, triggers en door de gebruiker gedefinieerde functies aan efficiëntie verliezen. Door stored procedures en triggers die op een tabel werken opnieuw te compileren, kun je de queries opnieuw optimaliseren.
Proactieve uitvoering van deze opgeslagen procedure is meestal niet nodig. SQL Server compileert automatisch opgeslagen procedures, triggers en door de gebruiker gedefinieerde functies wanneer dit voordelig is. Er zijn verschillende redenen waarom de database-engine ervoor kan kiezen om objecten opnieuw te compileren. Meestal volgt automatische hercompilatie veranderingen in de onderliggende cardinaliteitsschatting door automatische of handmatige statistiekupdates.
Het opnieuw compileren van een opgeslagen procedure bij elke uitvoering is een van de minder efficiënte manieren om queryplanproblemen veroorzaakt door parameterisatie te bestrijden. De functie Parameter Sensitive Plan-optimalisatie , geïntroduceerd in SQL Server 2022 (16.x), probeert dit probleem automatisch te verhelpen. In eerdere versies kun je in plaats van bij elke uitvoering aan te roepen sp_recompile :
- Voeg de optie WITH RECOMPILEER toe aan de query, waarvoor een codewijziging vereist is.
- Pas de
WITH RECOMPILEoptie toe met een plangids. - Pas de
WITH RECOMPILEoptie toe met een Query Store-tip zonder codewijzigingen aan te brengen. - Voor meer informatie, zie Query's oplossen met parametergevoelige planproblemen.
Permissions
Vereist ALTER-toestemming voor het opgegeven object.
Voorbeelden
Het volgende voorbeeld zorgt ervoor dat opgeslagen procedures, triggers en door de gebruiker gedefinieerde functies die op de Sales.Customer tabel werken, de volgende keer dat ze worden uitgevoerd, opnieuw worden gecompileerd.
USE AdventureWorks2022;
GO
EXECUTE sp_recompile N'Sales.Customer';
GO