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 de 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 qui font référence à cette table ou vue seront recompilées lors de leur prochaine exécution.

Valeurs des codes renvoyés

0 (réussite) ou nombre non nul (é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.

[!REMARQUE]

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é.

Exemples

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

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