Articles

Recompilar o Procedimento Armazenado

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

aplica-se a: SQL Server (todas as versões) Azure SQL Database Azure SQL Instância Gerenciada Azure Sinapse Analytics Parallel Data Warehouse

Este tópico descreve como recompilar o procedimento armazenado no SQL Server utilizando o Transact-SQL. Existem três maneiras de fazer isso: com a opção RECOMPILE na definição do procedimento ou quando o procedimento é chamado, a dica da consulta RECOMPILE em declarações individuais, ou usando o procedimento armazenado do sistema sp_recompile. Este tópico descreve o uso da opção com RECOMPILE ao criar uma definição de procedimento e executar um procedimento existente. Ele também descreve o uso do procedimento de armazenamento do sistema sp_recompile para recompilar um procedimento existente.

Neste Tópico

  • Antes de começar:

    Recomendações

    Segurança

  • recompilar um procedimento armazenado, usando:

    Transact-SQL

Antes de Começar

Recomendações

  • Quando um procedimento é compilado pela primeira vez ou novamente compilado, o procedimento do plano de consulta é otimizada para o estado atual do banco de dados e seus objetos. Se um banco de dados sofrer mudanças significativas em seus dados ou estrutura, recompilando atualizações de procedimento e otimiza o plano de consulta do procedimento para essas alterações. Isto pode melhorar o desempenho de processamento do procedimento.há alturas em que a recompilação do processo tem de ser forçada e outras em que ocorre automaticamente. A recompilação automática ocorre sempre que o servidor SQL é reiniciado. Também ocorre se uma tabela subjacente referenciada pelo procedimento tiver sido submetida a alterações físicas de projeto.

  • outra razão para forçar um procedimento a recompilar é para neutralizar o comportamento” cheirando parâmetros ” da compilação de procedimentos. Quando o servidor SQL executa procedimentos, quaisquer valores de parâmetros que são usados pelo procedimento quando ele compila são incluídos como parte da geração do plano de consulta. Se esses valores representam os típicos com os quais o procedimento é posteriormente chamado, então o procedimento beneficia do plano de Consulta toda vez que ele compila e executa. Se os valores dos parâmetros no procedimento são frequentemente atípicos, forçar uma recompila do procedimento e um novo plano baseado em valores de parâmetros diferentes podem melhorar o desempenho.

  • SQL Server features statement-level recompilation of procedures. Quando o servidor SQL recompila procedimentos armazenados, apenas a declaração que causou a recompilação é compilada, em vez do procedimento completo.

  • Se certas consultas num procedimento utilizam regularmente valores atípicos ou temporários, o desempenho do procedimento pode ser melhorado usando a dica da consulta de RECOMPILE dentro dessas consultas. Uma vez que apenas as consultas usando a dica da consulta serão recompiladas em vez do procedimento completo, o comportamento de recompilação de nível de instrução do servidor SQL é mimado. Mas, além de usar os valores atuais do parâmetro do procedimento, a dica da consulta de RECOMPILE também usa os valores de quaisquer variáveis locais dentro do procedimento armazenado quando você compila a declaração. Para mais informações, consulte a dica da consulta (Transact-SQL).

segurança

permissões

com opção de recompilar
Se esta opção for usada quando a definição do procedimento é criada, ela requer permissão para criar procedimento na base de dados e alterar a permissão no esquema em que o procedimento está sendo criado.

Se esta opção for usada numa instrução de execução, necessita de executar permissões no procedimento. As permissões não são necessárias na própria declaração de execução, mas as permissões de execução são necessárias no procedimento referenciado na declaração de execução. Para mais informações, veja EXECUTE (Transact-SQL).

RECOMPILE Query Hint
This feature is used when the procedure is created and the hint is included in Transact-SQL statements in the procedure. Portanto, requer a criação de permissão de procedimento na base de dados e alterar a permissão no esquema em que o procedimento está sendo criado.

Sp_recompile System Stored Procedure
Requires ALTER permission on the specified procedure.

usando Transact-SQL

  1. ligue-se ao motor da Base de dados.

  2. da barra Padrão, carregue em Nova Consulta.

  3. copie e cole o seguinte exemplo na janela da consulta e carregue em Executar. Este exemplo cria a definição do procedimento.

    USE AdventureWorks2012; GO IF OBJECT_ID ( 'dbo.uspProductByVendor', 'P' ) IS NOT NULL DROP PROCEDURE dbo.uspProductByVendor; GO CREATE PROCEDURE dbo.uspProductByVendor @Name varchar(30) = '%' WITH RECOMPILE AS SET NOCOUNT ON; SELECT v.Name AS 'Vendor name', p.Name AS 'Product name' FROM Purchasing.Vendor AS v JOIN Purchasing.ProductVendor AS pv ON v.BusinessEntityID = pv.BusinessEntityID JOIN Production.Product AS p ON pv.ProductID = p.ProductID WHERE v.Name LIKE @Name; 

para recompilar um procedimento armazenado usando a opção com recompilação

seleccione a nova consulta, depois copie e cole o seguinte exemplo de código na janela da consulta e carregue em Executar. Isto executa o procedimento e recompila o plano de consulta do procedimento.

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

para recompilar um procedimento armazenado usando sp_recompile

seleccione Nova Consulta, em seguida copie e cole o seguinte exemplo na janela da consulta e carregue em Executar. Isto não executa o procedimento, mas marca o procedimento a ser recompilado para que seu plano de consulta seja atualizado da próxima vez que o procedimento for executado.

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

See Also

Create a Stored Procedure
Modify a Stored Procedure
Rename a Stored Procedure
View the Definition of a Stored Procedure
View the Dependencies of a Stored Procedure
DROP PROCEDURE (Transact-SQL)