sp_recompile (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Gör att lagrade procedurer, triggers och användardefinierade funktioner kompileras om nästa gång de körs. Detta görs genom att ta bort den befintliga planen från procedurcachen, vilket tvingar en ny plan att skapas nästa gång proceduren eller triggern körs. I en SQL Server Profiler-samling loggas händelsen SP:CacheInsert istället för händelsen SP:Recompile.

Transact-SQL syntaxkonventioner

Syntax

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

Arguments

[ @objname = ] Nej

Det kvalificerade eller okvalificerade namnet på en lagrad procedur, trigger, tabell, vy eller användardefinierad funktion i den aktuella databasen. @objname är nvarchar(776), utan standard.

  • Om @objname är namnet på en lagrad procedur, trigger eller användardefinierad funktion, kommer den lagrade proceduren, triggern eller funktionen att kompileras om nästa gång den körs.

  • Om @objname är namnet på en tabell eller vy, kommer alla lagrade procedurer, triggers eller användardefinierade funktioner som refererar till tabellen eller vyn att kompileras om nästa gång de körs.

Returnera kodvärden

0 (lyckades) eller ett icke-nolltal (fel).

Anmärkningar

sp_recompile Letar endast efter ett objekt i den aktuella databasen.

De frågor som används av lagrade procedurer, eller triggers, och användardefinierade funktioner optimeras endast när de kompileras. När index eller andra ändringar som påverkar statistik görs i databasen kan kompilerade lagrade procedurer, triggers och användardefinierade funktioner förlora effektivitet. Genom att kompilera om lagrade procedurer och triggers som agerar på en tabell kan du optimera frågorna igen.

Proaktiv exekvering av denna lagrade procedur är vanligtvis onödig. SQL Server kompilerar automatiskt om lagrade procedurer, triggers och användardefinierade funktioner när det är fördelaktigt. Det finns olika anledningar till att databasmotorn kan välja att kompilera om objekt. Oftast följer automatisk omkompilering förändringar i den underliggande kardinalitetsskattningen på grund av automatiska eller manuella statistikuppdateringar.

Att kompilera om en lagrad procedur vid varje körning är ett av de mindre effektiva sätten att motverka problem med frågeplaner orsakade av parameterisering. Funktionen Parameter Sensitive Plan-optimering som introducerades i SQL Server 2022 (16.x) försöker automatiskt mildra detta problem. I tidigare versioner, istället för att anropa sp_recompile vid varje exekvering, överväg:

Permissions

Kräver ALTER-behörighet på det angivna objektet.

Examples

Följande exempel gör att lagrade procedurer, triggers och användardefinierade funktioner som verkar på Sales.Customer tabellen kompileras om nästa gång de körs.

USE AdventureWorks2022;
GO

EXECUTE sp_recompile N'Sales.Customer';
GO