OK, vi har haft lignende problemer som dette før.
Den måde, vi fiksede dette på, var ved at lave lokale parametre inde i SP, sådan at
DECLARE @LOCAL_Contract_ID int,
@LOCAL_dt_From smalldatetime,
@LOCAL_dt_To smalldatetime,
@LOCAL_Last_Run_Date datetime
SELECT @LOCAL_Contract_ID = @Contract_ID,
@LOCAL_dt_From = @dt_From,
@LOCAL_dt_To = @dt_To,
@LOCAL_Last_Run_Date = @Last_Run_Date
Vi bruger så de lokale parametre inde i SP i stedet for de parametre, der blev sendt ind.
Dette løste typisk problemet for os.
Vi mener, at dette skyldes parametersniffing, men har ikke noget bevis, undskyld... X-)
EDIT:
Tag et kig på Forskellige tilgange for at rette SQL Server Parameter Sniffing for nogle indsigtsfulde eksempler, forklaringer og rettelser.