Articles

Recompilar a Procedimiento Almacenado

  • 10/28/2019
  • 4 minutos para leer
    • s
    • M
    • m
    • d
    • m
    • +2

se aplica a: SQL Server (todas las versiones compatibles) Azure SQL Database Instancia administrada de Azure SQL Azure Synapse Analytics Almacén de datos en paralelo

Este tema describe cómo recompilar un procedimiento almacenado en SQL Server mediante Transact-SQL. Hay tres formas de hacer esto: CON la opción RECOMPILAR en la definición del procedimiento o cuando se llama al procedimiento, la sugerencia de consulta RECOMPILAR en instrucciones individuales, o mediante el uso del procedimiento almacenado del sistema sp_recompile. En este tema se describe el uso de la opción CON RECOMPILAR al crear una definición de procedimiento y ejecutar un procedimiento existente. También describe el uso del procedimiento almacenado del sistema sp_recompile para recompilar un procedimiento existente.

En Este Tema

  • Antes de comenzar:

    Recomendaciones

    Seguridad

  • Para compilar un procedimiento almacenado, mediante:

    Transact-SQL

Antes de comenzar

Recomendaciones

  • Cuando un procedimiento se compila por primera vez o se recompila, el plan de consulta del procedimiento se optimiza para el estado actual de la base de datos y sus objetos. Si una base de datos sufre cambios significativos en sus datos o estructura, recompilar un procedimiento actualiza y optimiza el plan de consulta del procedimiento para esos cambios. Esto puede mejorar el rendimiento de procesamiento del procedimiento.

  • Hay momentos en que la recompilación del procedimiento debe ser forzada y otras veces en que se produce automáticamente. La recompilación automática se produce cuando se reinicia SQL Server. También ocurre si una tabla subyacente a la que hace referencia el procedimiento ha sufrido cambios de diseño físico.

  • Otra razón para forzar la recompilación de un procedimiento es contrarrestar el comportamiento de «rastreo de parámetros» de la compilación de procedimientos. Cuando SQL Server ejecuta procedimientos, los valores de parámetro que utiliza el procedimiento cuando compila se incluyen como parte de la generación del plan de consulta. Si estos valores representan los típicos con los que se llama posteriormente al procedimiento, entonces el procedimiento se beneficia del plan de consultas cada vez que compila y ejecuta. Si los valores de los parámetros en el procedimiento son con frecuencia atípicos, forzar una recompilación del procedimiento y un nuevo plan basado en diferentes valores de parámetros puede mejorar el rendimiento.

  • SQL Server cuenta con la recompilación de procedimientos a nivel de instrucción. Cuando SQL Server recompila procedimientos almacenados, solo se compila la instrucción que causó la recompilación, en lugar del procedimiento completo.

  • Si ciertas consultas de un procedimiento utilizan regularmente valores atípicos o temporales, el rendimiento del procedimiento se puede mejorar mediante el uso de la sugerencia de consulta de RECOMPILACIÓN dentro de esas consultas. Dado que solo se recompilarán las consultas que usan la sugerencia de consulta en lugar del procedimiento completo, se imita el comportamiento de recompilación a nivel de instrucción de SQL Server. Pero además de utilizar los valores de los parámetros actuales del procedimiento, la sugerencia de consulta RECOMPILAR también utiliza los valores de cualquier variable local dentro del procedimiento almacenado cuando compila la instrucción. Para obtener más información, consulte Sugerencia de consulta (Transact-SQL).

Seguridad

Permisos

CON opción RECOMPILAR
Si se utiliza esta opción cuando se crea la definición de procedimiento, se requiere el permiso CREAR PROCEDIMIENTO en la base de datos y MODIFICAR el permiso en el esquema en el que se crea el procedimiento.

Si esta opción se usa en una instrucción EXECUTE, requiere permisos de EJECUCIÓN en el procedimiento. No se requieren permisos en la instrucción EXECUTE en sí, pero se requieren permisos de ejecución en el procedimiento al que se hace referencia en la instrucción EXECUTE. Para obtener más información, consulte EJECUTAR (Transact-SQL).

Sugerencia de consulta RECOMPILAR
Esta característica se utiliza cuando se crea el procedimiento y la sugerencia se incluye en las instrucciones Transact-SQL del procedimiento. Por lo tanto, requiere el permiso CREAR PROCEDIMIENTO en la base de datos y MODIFICAR el permiso en el esquema en el que se está creando el procedimiento.

El procedimiento almacenado del sistema sp_recompile
Requiere el permiso ALTER en el procedimiento especificado.

Usando Transact-SQL

  1. Conéctese al motor de base de datos.

  2. en la barra Estándar, haga clic en Nueva Consulta.

  3. Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. Este ejemplo crea la definición del procedimiento.

Para recompilar un procedimiento almacenado mediante la opción CON RECOMPILAR

Seleccione Nueva consulta, copie y pegue el siguiente ejemplo de código en la ventana de consulta y haga clic en Ejecutar. Esto ejecuta el procedimiento y recompila el plan de consulta del procedimiento.

USE AdventureWorks2012; GO EXECUTE HumanResources.uspProductByVendor WITH RECOMPILE; GO

Para recompilar un procedimiento almacenado mediante sp_recompile

Seleccione Nueva consulta, copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. Esto no ejecuta el procedimiento, pero marca el procedimiento a recompilar para que su plan de consulta se actualice la próxima vez que se ejecute el procedimiento.

USE AdventureWorks2012; GO EXEC sp_recompile N'dbo.uspProductByVendor'; GO

Véase También

Crear un Procedimiento almacenado
Modificar un Procedimiento almacenado
Cambiar el nombre de un procedimiento almacenado
Ver la Definición de un Procedimiento almacenado
Ver las Dependencias de un procedimiento almacenado
PROCEDIMIENTO DROP (Transact-SQL)