sql >> Database teknologi >  >> RDS >> Sqlserver

Kendt problem?:SQL Server 2005-lagrede procedure kan ikke fuldføres med en parameter

Prøv at maskere inputparameteren.

Jeg gætter på, at omkompileringen ikke virker på grund af den angivne standard (EDIT :Eller parameter sendt ved første opkald) bliver sniffet på kompileringstidspunktet. Så genkompilering har ingen effekt.

Jeg har set en enorm forskel mellem estimerede planer blot ved at ændre standarden fra f.eks. nul til NULL eller ikke have en.

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

Jeg tror, ​​at denne artikel forklarer...

EDIT:

Nyt link til forespørgselsplaner og -parametre . Det er stadig parametersniffing, om en standard er angivet eller ej.

Slags relateret artikel om konstanter og planer



  1. Hvordan bruger man variable indstillinger i triggerfunktioner?

  2. Hvordan sender man sessionsvariabler i JDBC url korrekt?

  3. Tjek om rækken findes

  4. Valg af største N poster i X grupper