Condividi tramite


sp_recompile (Transact-SQL)

Causa la ricompilazione di stored procedure e trigger alla successiva esecuzione degli stessi. Ciò avviene tramite l'eliminazione del piano esistente dalla cache delle procedure e la creazione forzata di un nuovo piano alla successiva esecuzione della stored procedure o del trigger. In una raccolta SQL Server Profiler, viene registrato l'evento SP:CacheInsert anziché l'evento SP:Recompile.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

        sp_recompile [ @objname= ] 'object'

Argomenti

  • [ @objname= ] 'object'
    Nome qualificato o non qualificato di una stored procedure, un trigger, una tabella o una vista nel database corrente. object è nvarchar(776) e non prevede alcun valore predefinito. Se object corrisponde al nome di una stored procedure o un trigger, tale stored procedure o trigger verrà ricompilato alla successiva esecuzione. Se object corrisponde al nome di una tabella o una vista, tutte le stored procedure o i trigger che fanno riferimento alla tabella o alla vista verranno ricompilati alla successiva esecuzione.

Valori dei codici restituiti

0 (esito positivo) o un numero diverso da zero (esito negativo)

Osservazioni

sp_recompile esegue la ricerca di un oggetto solo nel database corrente.

Le query utilizzate da stored procedure e trigger vengono ottimizzate solo in fase di compilazione. Effettuando indicizzazioni o altre modifiche che hanno effetto sulle statistiche, il livello di efficienza di stored procedure e trigger dopo la compilazione potrebbe risultare minore. Tramite la ricompilazione delle stored procedure e dei trigger che modificano una tabella, è possibile riottimizzare le query.

Nota

In SQL Server le stored procedure e i trigger vengono ricompilati automaticamente quando la ricompilazione risulta un'operazione vantaggiosa.

Autorizzazioni

È richiesta l'autorizzazione ALTER per l'oggetto specificato.

Esempi

Nell'esempio seguente viene definita la ricompilazione delle stored procedure e dei trigger che modificano la tabella Customer alla loro successiva esecuzione.

USE AdventureWorks2008R2;
GO
EXEC sp_recompile N'Sales.Customer';
GO