sp_recompile (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Faz com que procedimentos armazenados, gatilhos e funções definidas pelo usuário sejam recompilados na próxima vez que forem executados. Ele faz isso descartando o plano existente do cache de procedimento, forçando um novo plano a ser criado na próxima vez que o procedimento ou gatilho for executado. Em uma coleção do SQL Server Profiler, o evento é registrado em vez do evento SP:CacheInsertSP:Recompile.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_recompile [ @objname = ] N'object'
[ ; ]

Argumentos

@objname [ = ] N'objeto'

O nome qualificado ou não qualificado de um procedimento armazenado, gatilho, tabela, exibição ou função definida pelo usuário no banco de dados atual. @objname é nvarchar(776), sem padrão.

  • Se @objname for o nome de um procedimento armazenado, gatilho ou função definida pelo usuário, o procedimento armazenado, gatilho ou função será recompilado na próxima vez que for executado.

  • Se @objname for o nome de uma tabela ou exibição, todos os procedimentos armazenados, gatilhos ou funções definidas pelo usuário que fazem referência à tabela ou exibição serão recompilados na próxima vez que forem executados.

Valores do código de retorno

0 (êxito) ou um número diferente de zero (falha)

Comentários

sp_recompile Procura apenas um objeto no banco de dados atual.

As consultas usadas por procedimentos armazenados ou gatilhos e funções definidas pelo usuário são otimizadas somente quando são compiladas. Como índices ou outras alterações que afetam as estatísticas são feitos no banco de dados, os procedimentos armazenados compilados, gatilhos e funções definidas pelo usuário podem perder a eficiência. Recompilando procedimentos armazenados e gatilhos que agem em uma tabela, você pode reotimizar as consultas.

A execução proativa desse procedimento armazenado geralmente é desnecessária. O SQL Server recompila automaticamente procedimentos armazenados, gatilhos e funções definidas pelo usuário quando vantajoso. Há várias razões pelas quais o mecanismo de banco de dados pode optar por recompilar objetos. Mais comumente, a recompilação automática segue alterações na estimativa de cardinalidade subjacente devido a atualizações automáticas ou manuais de estatísticas.

Recompilar um procedimento armazenado a cada execução é uma das maneiras menos eficientes de combater problemas de plano de consulta causados pela parametrização. O recurso Otimização do Plano Sensível a Parâmetros introduzido no SQL Server 2022 (16.x) tenta atenuar esse problema automaticamente. Em versões anteriores, em vez de chamar sp_recompile a cada execução, considere:

Permissões

Exige permissão ALTER no objeto especificado.

Exemplos

O exemplo a seguir faz com que procedimentos armazenados, gatilhos Sales.Customer e funções definidas pelo usuário que atuam na tabela sejam recompilados na próxima vez que forem executados.

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

Confira também

Próximas etapas