sql >> Databasteknik >  >> RDS >> Sqlserver

Känt problem?:SQL Server 2005-lagrade proceduren slutförs inte med en parameter

Försök att maskera indataparametern.

Jag antar att omkompileringen inte fungerar på grund av den angivna standardinställningen (EDIT :Eller parameter som skickas vid första anropet) som sniffas vid kompileringstillfället. Så kompilering har ingen effekt.

Jag har sett enorma skillnader mellan uppskattade planer helt enkelt genom att ändra standard från säg noll till NULL, eller inte ha någon.

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

Jag tror att denna artikel förklarar...

EDIT:

Ny länk på frågeplaner och parametrar . Det är fortfarande parametersniffning oavsett om en standard är angiven eller inte.

Sorts relaterad artikel om konstanter och planer



  1. Hämta lista över alla noll- och inte-nollkolumner i SQL Server-databasen - SQL Server / T-SQL självstudie del 53

  2. .MySQLNonTransientConnectionException:Kunde inte skapa anslutning till databasserver

  3. En databasmodell för en onlineundersökning. Del 2

  4. Få summan av ett fält grupperat efter datum och ett annat fält