Иногда мы сталкиваемся с запросом, который бесконечно зависает на нашем SQL Server. Этот запрос вызывается с отдельного веб-сервера ColdFusion.
Если я запускаю профилировщик, пока он висит, я просто вижу, что блокировки выделяются и снимаются снова и снова. Все остальные запросы к этой базе данных выполняются нормально, пока этот запрос зависает.
Странно то, что я могу запустить запрос из SSMS, и он выполняется за секунды (даже если запрос приложения завис).
Единственное решение, которое я нашел до сих пор, - это сделать резервную копию базы данных, а затем восстановить базу данных. Это сразу решает проблему.
Есть какие-нибудь подсказки относительно того, что происходит?
Заранее спасибо!
Безусловно, остановить и запустить службу SQL Server удобнее, чем выполнять операцию резервного копирования и восстановления.
Пока запрос "зависает", посмотрите на монитор активности в графическом интерфейсе или sp_who2 через Query Analyzer. Вы должны быть в состоянии идентифицировать процесс - посмотрите, чего он ждет, и не заблокирован ли он. Повторите, чтобы увидеть, что CPU / IO движется.
Также проверьте журналы SQL и NT, чтобы узнать, что происходит.
Я бы предложил все это в качестве первого шага.
Вы можете проверить отчет о заблокированном процессе, чтобы узнать, не заблокирован ли ваш запрос чем-то другим.
Проверьте этот ссылку.