sp_recompile (Transact-SQL)

Provoque la recompilation des procédures stockées et des déclencheurs lors de leur prochaine exécution. Pour cela, il supprime le plan existant du cache de procédures, ce qui force la création d'un nouveau plan lors de la prochaine exécution de la procédure ou du déclencheur. Dans une collection SQL Server Profiler, l'événement SP:CacheInsert est journalisé au lieu de l'événement SP:Recompile.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

        sp_recompile [ @objname= ] 'object'

Arguments

  • [ @objname= ] 'object'
    Nom qualifié ou non qualifié d'une procédure stockée, d'un déclencheur, d'une table ou d'une vue dans la base de données actuelle. L'argument object est de type nvarchar(776), sans valeur par défaut. Si object est le nom d'une procédure stockée ou d'un déclencheur, la procédure stockée ou le déclencheur seront recompilés lors de leur prochaine exécution. Si object est le nom d'une table ou d'une vue, toutes les procédures stockées ou tous les déclencheurs qui font référence à cette table ou cette vue seront recompilées lors de leur prochaine exécution.

Valeurs des codes de retour

0 (réussite) ou un nombre différent de zéro (échec)

Notes

sp_recompile ne recherche un objet que dans la base de données active.

Les requêtes utilisées par les procédures stockées et les déclencheurs ne sont optimisées que quand elles sont compilées. À mesure que vous ajoutez des index à votre base de données ou que vous y apportez d'autres changements modifiant ses statistiques, les procédures stockées compilées et les déclencheurs peuvent perdre de leur efficacité. En recompilant les procédures stockées et les déclencheurs qui agissent sur une table, vous pouvez réoptimiser les requêtes.

Notes

SQL Server recompile automatiquement les procédures stockées et les déclencheurs quand il est avantageux de le faire.

Autorisations

Nécessite l'autorisation ALTER pour l'objet spécifié.

Exemple

L'exemple suivant engendre la recompilation des procédures stockées et des déclencheurs qui agissent sur la table Customer lors de leur prochaine exécution.

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