Как предотвратить одновременное выполнение заданий сервера Sql - PullRequest
9 голосов
/ 19 октября 2010

У меня в агенте SQL есть несколько запланированных заданий:

  • Job1, выполнение каждые 2 минуты
  • Job2, выполнение каждые 10 минут
  • Job3, выполнение каждого15 минут

Как видите, несколько заданий могут выполняться одновременно.Когда эти задания выполняются одновременно, это приводит к тому, что загрузка ЦП достигает 100%.

Есть ли решение?Есть ли способ контролировать количество одновременно выполняемых заданий?Примечание. Мне нужно, чтобы эти задания выполнялись приблизительно в соответствующий период.

1 Ответ

12 голосов
/ 19 октября 2010

Использовать блокировку сеанса через sp_getapplock

Вы запрашиваете управляемый пользователем параллелизм, и обычно это лучший способ.

Это позволяет вам ждать илипрервать, если блокировка уже удерживается другим заданием.Мы используем его в одном или двух местах, чтобы несколько пользователей не заставляли одну и ту же задачу запускать перекрытие.Хорошо работает.

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