sp_recompile (Transact-SQL)

Hace que se vuelvan a compilar los procedimientos almacenados y los desencadenadores cuando se vuelvan a ejecutar. Para ello, quita el plan existente de la memoria caché de procedimientos forzando la creación de un nuevo plan cuando se vuelvan a ejecutar el procedimiento o el desencadenador. En una colección de SQL Server Profiler, se registra el evento SP:CacheInsert en lugar del evento SP:Recompile.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_recompile [ @objname= ] 'object'

Argumentos

  • [ @objname = ] 'object'
    Es el nombre calificado o no calificado de un desencadenador, tabla, vista o procedimiento almacenado de la base de datos actual. object es de tipo nvarchar(776) y no tiene ningún valor predeterminado. Si object es el nombre de un desencadenador o procedimiento almacenado, la próxima vez que éste se ejecute se volverá a compilar. Si object es el nombre de una tabla o vista, la próxima vez que se ejecuten todos los procedimientos almacenados que hagan referencia a la tabla o vista, se volverán a compilar.

Valores de código de retorno

0 (correcto) o número distinto de cero (error)

Notas

sp_recompile busca un objeto sólo en la base de datos actual.

Las consultas que utilizan los procedimientos almacenados o desencadenadores sólo se optimizan cuando se compilan. A medida que se crean índices o se realizan otros cambios que afectan a las estadísticas de la base de datos, los procedimientos almacenados y desencadenadores compilados pueden perder eficacia. Al volver a compilar los procedimientos almacenados y desencadenadores que actúan sobre una tabla, puede volver a optimizar las consultas.

[!NOTA]

SQL Server vuelve a compilar automáticamente los procedimientos almacenados y desencadenadores cuando esto supone una mejora.

Permisos

Requiere el permiso ALTER en el objeto especificado.

Ejemplos

El siguiente ejemplo provoca que los procedimientos almacenados que actúan en la tabla Customer se vuelvan a compilar la próxima vez que se ejecuten.

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