Если это сниффинг параметров, попробуйте добавить option(recompile)
в конец вашего запроса.
Я бы порекомендовал создать хранимую процедуру для инкапсуляции логики в более управляемой форме. Также договорились - зачем вы передаете 5 параметров, если вам нужно только три, судя по примеру?
Можете ли вы использовать этот запрос вместо этого?
select TrustAccountValue from
(
SELECT MAX (tal.trustaccountlogid), tal.TrustAccountValue
FROM TrustAccountLog AS tal
INNER JOIN TrustAccount ta ON ta.TrustAccountID = tal.TrustAccountID
INNER JOIN Users usr ON usr.UserID = ta.UserID
WHERE usr.UserID = 70402 AND
ta.TrustAccountID = 117249 AND
tal.TrustAccountLogDate < '3/1/2010 12:00:00 AM'
group by tal.TrustAccountValue
) q
И, для чего это стоит, вы используете неоднозначный формат даты, в зависимости от языковых настроек пользователя, выполняющего запрос. Для меня, например, это 3 января, а не 1 марта. Проверьте это:
set language us_english
go
select @@language --us_english
select convert(datetime, '3/1/2010 12:00:00 AM')
go
set language british
go
select @@language --british
select convert(datetime, '3/1/2010 12:00:00 AM')
Рекомендуется использовать формат «ISO» ггггммдд чч: мм: сс
select convert(datetime, '20100301 00:00:00') --midnight 00, noon 12