SPROC зависает в SQL Server 2005 - PullRequest
       7

SPROC зависает в SQL Server 2005

0 голосов
/ 04 февраля 2010

У меня проблема с SQL Server 2005, где хранимая процедура, кажется, случайно зависает / блокируется и никогда не возвращает никакого результата.

То, что делает хранимая процедура, - это вызов функции, которая, в свою очередь, объединяет две разные функции - возвращает данные одного и того же типа, но по разным критериям.Ничего сложного.Я не думаю, что это зависание функций, потому что есть другие SPROC, которые без проблем вызывают те же функции, даже когда первый заблокирован.

После зависания SPROC любые дальнейшие попытки вызвать егоприведет к тайм-ауту - не к самому вызову, но время отклика будет слишком велико, так как результат не будет возвращен, код вызовет исключение.

Это произошло как минимум три раза за два месяцав системе с относительно низкой нагрузкой.Перезапуск SQL Server решает ситуацию, но я не рассматриваю это как «решение» проблемы.

Я искал информацию и обнаружил, что кэш запросов поврежден.Однако это было связано с динамическими строками SQL, что не является моей проблемой.Я думаю, это все еще может быть кеш запросов.

У кого-нибудь была такая же проблема, и если да, что вы с этим сделали (не говорите «перезапускайте SQL Server каждое утро»;))?Есть ли способ отладить проблему, чтобы попытаться найти именно то, что и где не так?Я не могу воссоздать проблему, но когда она появится снова, было бы хорошо, если бы я знала, где посмотреть поближе.

Не думаю, что это имеет какое-то значение, но только для протокола,SPROC вызывается из кода .NET 3.5 с использованием Entity Franework.Я говорю, что это не имеет значения, потому что, когда я тестировал выполнение SPROC непосредственно из SQL Server Management Studio, результат также не возвращался.

Ответы [ 3 ]

2 голосов
/ 04 февраля 2010

Скорее всего, сниффинг параметров

Перезапуск сервера SQL очищает кэш плана.Если вы перестроите статистику или индексы, проблема также исчезнет «ALTER INDEX» и «sp_updatestats»

Я предлагаю использовать «маскирование параметров» (не WITH RECOMPILE!), Чтобы обойти это

SOответ уже мной:

2 голосов
/ 04 февраля 2010

Ваша СТАТИСТИКА актуальна?Одна из распространенных причин неверного плана запроса в кэше - устаревшая статистика.

Есть ли у вас запланированное задание по перестройке индекса по расписанию?

0 голосов
/ 04 февраля 2010

Вы проверили журнал SQL Server ..?Определенно причина проблемы была зарегистрирована ... по крайней мере, вы можете получить некоторую подсказку об этом.пожалуйста, проверьте это.

В этой превосходной статье MSDN Технический бюллетень по SQL Server - Как устранить тупик очень подробно описывает шаги, необходимые для выявления и устранения проблем взаимоблокировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...