Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

O procedimento armazenado trava aparentemente sem explicação


Eu acho que isso está relacionado ao sniffing de parâmetros e à necessidade de parametrizar seus parâmetros de entrada para parâmetros locais dentro do SP. Adicionar com recompilação faz com que o plano de execução seja recriado e elimina muitos dos benefícios de ter um SP. Estávamos usando o With Recompile em muitos relatórios na tentativa de eliminar esse problema de suspensão e, ocasionalmente, resultava na suspensão de SP's que podem estar relacionados a outros bloqueios e/ou transações acessando as mesmas tabelas simultaneamente. Veja este link para mais detalhesSniffing de parâmetros (ou spoofing ) no SQL Server e altere seus SPs para o seguinte para corrigir isso:

CRIAR PROCEDIMENTO [dbo].[SPNAME] @p1 int, @p2 intAS

DECLARE @localp1 int, @localp2 int

SET @[email protected] SET @[email protected]