Это, вероятно, проблема с планом выполнения в кэше. Я видел, как это происходило довольно часто, когда хранимая процедура истекает, но запуск того же SQL из анализатора запросов немедленно возвращается. Два простых способа, которые я знаю, чтобы исправить это на данный момент:
Очистить кэш выполнения
Это удалит плохой кэшированный план с сервера (вместе со всем остальным). Не совсем долгосрочное решение, так как хранимая процедура, вероятно, снова будет иметь проблему в будущем, но это хорошее временное решение.
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
Добавить WITH RECOMPILE
к хранимой процедуре
CREATE PROCEDURE MyExample
WITH RECOMPILE
AS ...
Добавление параметра WITH RECOMPILE к хранимой процедуре заставляет SQL Server создавать новый план выполнения при каждом запуске процедуры. Это ухудшит производительность, но определенно лучше нанести небольшой удар по производительности, чем запускать всю процедуру в тысячи раз медленнее или по таймауту, как раньше.
Параметр Sniffing
Взгляните на эту статью , посвященную анализу параметров в хранимых процедурах. Согласно статье, вы можете немного изменить код хранимой процедуры, чтобы отключить анализ параметров MS SQL, что также может помочь решить проблему.