Сохраненная процедура зависает, казалось бы, без объяснения причин

у нас есть хранимая процедура, которая работала нормально до 10 минут назад, а затем просто зависает после ее вызова.

Наблюдения:

  • Копирование кода в окно запроса дает результат запроса через 1 секунду
  • SP занимает> 2,5 минут, пока я его не отменю
  • Монитор активности показывает, что он ничем не блокируется, он просто выполняет a SELECT.
  • Запуск sp_recompile на SP не помогает
  • Удаление и воссоздание SP не помогает
  • Установка LOCK_TIMEOUT на 1 секунду не помогает

Что еще может происходить?


ОБНОВЛЕНИЕ : Полагаю, это связано с анализом параметров. Я использовал процедуру Адама Мачаника, чтобы выяснить, какой подзапрос завис. Я обнаружил, что с планом запроса что-то не так, благодаря подсказке Мартина Смита. Я узнал о EXEC ... WITH RECOMPILE , OPTION (RECOMPILE) для подзапросов в SP, и OPTION (OPTIMIZE FOR (@parameter = 1)) для атаки на сниффинг параметров. Я до сих пор не знаю, что было не так в этом конкретном случае, но я вышел из этой битвы закаленным и гораздо лучше вооруженным. Я знаю, что делать в следующий раз. Итак, вот основные моменты!

21
задан thomaspaulb 9 November 2010 в 14:45
поделиться