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:CacheInsert
SP: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:
- Anexe a opção WITH RECOMPILE à consulta, exigindo uma alteração de código.
- Aplique a
WITH RECOMPILE
opção com um guia de plano. - Aplique a opção com uma dica
WITH RECOMPILE
do Repositório de Consultas sem fazer alterações no código. - Para obter mais informações, consulte Resolvendo consultas com problemas de plano sensíveis a parâmetros.
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
- CREATE PROCEDURE (Transact-SQL)
- CREATE TRIGGER (Transact-SQL)
- Procedimentos armazenados do sistema (Transact-SQL)
- Classe de evento SQL:StmtRecompile
Próximas etapas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de