Как остановить процессор / много времени выполнения запроса на SQL Server! - PullRequest
1 голос
/ 14 мая 2009

Давайте представим, что на моем сервере sql запущено несколько сотен запросов. Теперь я хочу защитить свой сервер от неправильных запросов, автоматически останавливая эти запросы. Как я могу добиться такого поведения в SQL Server 2005 без использования профилировщика и команды KILL?

Спасибо, Салман Шехбаз.

Ответы [ 3 ]

1 голос
/ 14 мая 2009

Вы можете свернуть собственное решение или обновить до SQL 2008.

Управление рабочими нагрузками SQL Server с помощью регулятора ресурсов

0 голосов
/ 14 мая 2009

создать новую хранимую процедуру на основе чего-то вроде:

sp_lock
sp_who2
beta_lockinfo  (http://www.sommarskog.se/sqlutil/beta_lockinfo.html)

Просто скопируйте одну из этих хранимых процедур и отредактируйте ее, чтобы найти «плохой запрос», а затем выполните KILL для spid. Создайте задание для запуска каждые N минут и запустите эту хранимую процедуру.

Внимание, ваша работа может оказаться "плохим запросом" и убить себя. Этот подход будет тратить системные ресурсы, но если вы действительно хотите это сделать, попробуйте этот метод!

0 голосов
/ 14 мая 2009

SQLServer имеет тайм-аут выполнения запроса, который истекает из-за ожидания запроса, если ему не выделена память в течение заданного времени, исходя из предполагаемой стоимости в плане выполнения (он ожидает в 25 раз больше, чем рассчитано по умолчанию). Если время запроса часто истекает, его нужно оптимизировать или вам нужно больше памяти.

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

Это может предоставить некоторую помощь

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