Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 асинхронное выполнение процедуры - sp_start_job или Service Broker - что выбрать?  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2307
MS SQL 2008 R2
Приложение (Navision) записывает в табличку товары, по которым надо пересчитать резервы, и вызывает процедуру, которая пересчитывает резервы.
Процедура считывает все товары для обработки из таблички, чистит таблицу со списком товаров и пересчитывает резервы.
Иногда процедура выполняется доли секунды, иногда несколько секунд.
Вызываться такая процедура может в некоторых случаях часто - несколько раз в секунду - не всегда успеет отработать перед следующим вызовом. Также регулярно будет ситуация, когда предыдущий вызов уже все товары обработал, и процедура ничего не делает (таблица со списком товаров пустая).
Так как задержки на уровне приложения нежелательны, вызов должен быть асинхронным - вызвал и забыл. Если резервы пересчитаются через несколько секунд - ничего страшного, лишь бы работа пользователей не тормозилась.

Порылся по форуму - есть два варианта асинхронного вызова хранимой процедуры - sp_start_job или Service Broker.
До этого не сталкивался ни с тем, ни с тем. Подскажите, что лучше подойдет для этой задачи?
19 июл 13, 13:01    [14589262]     Ответить | Цитировать Сообщить модератору
 Re: асинхронное выполнение процедуры - sp_start_job или Service Broker - что выбрать?  [new]
Jovanny
Member

Откуда:
Сообщений: 1196
Лично мне через джоб больше нравится - там можно через всё через интерфейс сделать и настройки менять - нотификация, логирование, расписание запуска. Кроме того, можно посмотреть истории запуска и т.п.

Если через Service Broker, нужно будет самому эти вещи дописывать. Если они нужны.
19 июл 13, 13:09    [14589319]     Ответить | Цитировать Сообщить модератору
 Re: асинхронное выполнение процедуры - sp_start_job или Service Broker - что выбрать?  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2307
Jovanny,
нет, ничего такого не нужно
даже больше - если иногда процедура пересчета по какой-либо причине не запустится - ничего страшного. Следующий вызов все пересчитает правильно.
Основной критерий - минимальная нагрузка и чтобы время между асинхронным вызовом и фактическим стартом выполнения процедуры в среднем не превышало пары секунд.
Ну и простота реализации. Мне это с нуля учить. Хелп посмотрел - вроде ничего особо сложного, но есть подозрение, что все не так легко, как кажется
19 июл 13, 13:47    [14589636]     Ответить | Цитировать Сообщить модератору
 Re: асинхронное выполнение процедуры - sp_start_job или Service Broker - что выбрать?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Если джобы, тогда определитесь, что не собираетсь использовать экспресс сервер.
19 июл 13, 14:16    [14589875]     Ответить | Цитировать Сообщить модератору
 Re: асинхронное выполнение процедуры - sp_start_job или Service Broker - что выбрать?  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2307
Winnipuh
Если джобы, тогда определитесь, что не собираетсь использовать экспресс сервер.

Microsoft SQL Server Standard Edition (64-bit)
19 июл 13, 15:46    [14590613]     Ответить | Цитировать Сообщить модератору
 Re: асинхронное выполнение процедуры - sp_start_job или Service Broker - что выбрать?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
s_ustinov
Winnipuh
Если джобы, тогда определитесь, что не собираетсь использовать экспресс сервер.

Microsoft SQL Server Standard Edition (64-bit)


я бы делал через брокер, закидываете в очередь запрос и он обрабатывается процедурой
21 июл 13, 21:59    [14596177]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить