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

Problema conhecido?:O procedimento armazenado do SQL Server 2005 não é concluído com um parâmetro


Tente mascarar o parâmetro de entrada.

Acho que a recompilação não está funcionando por causa do padrão especificado (EDIT :Ou parâmetro enviado na primeira chamada) sendo rastreado em tempo de compilação. Portanto, recompilar não tem efeito.

Eu vi uma enorme diferença entre os planos estimados simplesmente alterando o padrão de, digamos, zero para NULL, ou não tendo um.
ALTER PROCEDURE [usp_debug_mightwork]
    @DATA_DT_ID AS int = 20081130
AS
BEGIN
    DECLARE @IDATA_DT_ID AS int
    SET @IDATA_DT_ID = @DATA_DT_ID
    -- Stuff here that depends on IDATA_DT_ID
END

Acho que este artigo explica...

EDITAR:

Novo link sobre planos e parâmetros de consulta . Ainda é um parâmetro sniffing se um padrão é especificado ou não.

Tipo de artigo relacionado sobre constantes e planos