Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de dados SQL no Microsoft Fabric
Faz com que procedimentos armazenados, triggers e funções definidas pelo utilizador sejam recompilados na próxima execução. Faz isto ao eliminar o plano existente da cache do procedimento, forçando a criação de um novo plano na próxima vez que o procedimento ou disparador for executado. Numa coleção SQL Server Profiler, o evento SP:CacheInsert é registado em vez do evento SP:Recompile.
Transact-SQL convenções de sintaxe
Sintaxe
sp_recompile [ @objname = ] N'object'
[ ; ]
Arguments
[ @objname = ] N'objeto'
O nome qualificado ou não qualificado de um procedimento armazenado, trigger, tabela, vista ou função definida pelo utilizador na base de dados atual. @objname é nvarchar(776), sem padrão.
Se @objname for o nome de um procedimento armazenado, trigger ou função definida pelo utilizador, o procedimento armazenado, trigger ou função será recompilado na próxima execução.
Se @objname for o nome de uma tabela ou vista, todos os procedimentos armazenados, triggers ou funções definidas pelo utilizador que fazem referência à tabela ou vista serão recompilados na próxima execução.
Valores de código de retorno
0 (sucesso) ou um número diferente de zero (falha).
Observações
sp_recompile procura apenas um objeto na base de dados atual.
As consultas usadas por procedimentos armazenados, ou triggers, e funções definidas pelo utilizador são otimizadas apenas quando são compiladas. À medida que são feitos índices ou outras alterações que afetam estatísticas na base de dados, procedimentos armazenados compilados, triggers e funções definidas pelo utilizador podem perder eficiência. Ao recompilar procedimentos armazenados e triggers que atuam numa tabela, pode reotimizar as consultas.
A execução proativa deste procedimento armazenado é geralmente desnecessária. O SQL Server recompila automaticamente procedimentos armazenados, triggers e funções definidas pelo utilizador quando vantajoso. Existem várias razões pelas quais o motor de base de dados pode optar por recompilar objetos. Mais frequentemente, a recompilação automática segue alterações na estimativa de cardinalidade subjacente devido a atualizações estatísticas automáticas ou manuais.
Recompilar um procedimento armazenado a cada execução é uma das formas menos eficientes de combater problemas no plano de consulta causados pela parametrização. A funcionalidade Parameter Sensitive Plan Optimization , introduzida no SQL Server 2022 (16.x), tenta mitigar este problema automaticamente. Em versões anteriores, em vez de chamar sp_recompile com cada execução, considere:
- Adicione a opção WITH RECOMPILE à consulta, exigindo uma alteração de código.
- Aplica a
WITH RECOMPILEopção com um guia de plano. - Aplica a
WITH RECOMPILEopção com uma dica da Loja de Consultas sem fazer alterações ao código. - Para mais informações, consulte Resolver consultas com problemas de plano sensíveis a parâmetros.
Permissions
Requer permissão ALTER no objeto especificado.
Examples
O exemplo seguinte faz com que procedimentos armazenados, triggers e funções definidas pelo utilizador que atuam na Sales.Customer tabela sejam recompilados na próxima execução.
USE AdventureWorks2022;
GO
EXECUTE sp_recompile N'Sales.Customer';
GO