sp_recompile (Transact-SQL)
Hace que se vuelvan a compilar los procedimientos almacenados y los desencadenadores la próxima vez que se ejecuten. Para ello, quita el plan existente de la memoria cache de procedimientos que fuerza la creación de un nuevo plan la próxima vez que se ejecuten 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.
Se aplica a: SQL Server (SQL Server 2008 a versión actual), Windows Azure SQL Database (Versión inicial a versión actual). |
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_recompile [ @objname = ] 'object'
Argumentos
- [ @objname= ] 'object'
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 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 o desencadenadores que hagan referencia a la tabla o vista, se volverán a compilar.
Valores del código de retorno
0 (correcto) o un número distinto de cero (error)
Comentarios
sp_recompile busca un objeto solo en la base de datos actual.
Las consultas que utilizan los procedimientos almacenados o desencadenadores solo 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 y desencadenadores que actúan en la tabla Customer se vuelvan a compilar la próxima vez que se ejecuten.
USE AdventureWorks2012;
GO
EXEC sp_recompile N'Sales.Customer';
GO