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

Откуда:
Сообщений: 257
Добрый день.

Есть процедура, которая в курсоре запускает другую процедуру, формирующая отчет за период


Т.е есть таблица, справочник

открываем курсор
select a,b,c from TypeMessage
insert into #table
exec ReportProcedure @a,@b,@c

закрываем курсор

В таблице TypeMessage 7 записей, и по каждой записи она должна выстраить отчет.

Каждый проход занимает около одного часа, т.е 7 часов, на все записи.

Вопрос, как лучше сделать, чтобы например одни отчет запустился скажем по Id = 1 из таблицы TypeMessage, через некотрое время по второй записи Id = 2, в курсоре такое как я понимаю сделать невозможно, надо дождаться пока отработает по 1-записи, далее по второй и т.д

Не хотел бы создавать 7 джобов, есть ли какой-нибудь другой выход ?
Стоит ли копать в сторону Service Broker-a?

Заранее благодарен за Ваши советы.
25 май 14, 13:02    [16067844]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
А вы уверены что параллелизация не ухудшит ситуацию?
user87
Не хотел бы создавать 7 джобов
Картинка с другого сайта.

Час это эпично.
user87
Стоит ли копать в сторону Service Broker-a?
Стоит копать в сторону выравнивания рук в отчёте.
Курсоры, и долгие запросы говорят что и ... разобьёшь и руки порежешь.
25 май 14, 17:57    [16068606]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
user87
Member

Откуда:
Сообщений: 257
Насчет параллельно запуска не могу сказать ухудшится или нет, вот хочу попробовать, но не знаю как это сделать, думал что через service broker возможно будет, если есть другие варианты то сообщите пожалуйста)
25 май 14, 18:57    [16068849]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
puss_in_boots
Member

Откуда: ⒹⓌ(DreamWorks)
Сообщений: 93
SqlCommand
25 май 14, 21:39    [16069456]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
user87
Member

Откуда:
Сообщений: 257
Спасибо за ссылку, если я не ошибаюсь, то это надо писать программу, а средствами sq server нельзя это сделать?
25 май 14, 23:29    [16070046]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
Glory
Member

Откуда:
Сообщений: 104751
user87
а средствами sq server нельзя это сделать?

Вы их уже сами перечислили - джобы или брокер
26 май 14, 09:30    [16071087]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
user87, не обращайте внимания на мимо проходящих.
автор
Насчет параллельно запуска не могу сказать ухудшится или нет, вот хочу попробовать, но не знаю как это сделать
Блин, вы определитесь, окончательно реализовать или попробовать.
Если попробовать, то откройте 7 окошек и запустите, или делайте 7 джобов.
Делов пол минуты.
26 май 14, 09:46    [16071210]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8584
Посмотрите на загрузку процессоров, если она 100% для одного отчета, то сами понимаете...
26 май 14, 11:01    [16071791]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Владислав Колосов
Посмотрите на загрузку процессоров, если она 100% для одного отчета, то сами понимаете...
Это конечно показатель, но не всегда верный.
Бывает такое как активное ожидание. Если при этом процесс будет прерван, то это не означает что будут потери, наоборот.
К примеру ожидание CXPACKET.
26 май 14, 12:33    [16072601]     Ответить | Цитировать Сообщить модератору
 Re: как лучше сделать  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Ах, да, это не оправдывает решение с параллелизацией.
Это означает что можно получить какой-то профит даже при неправильных действиях.
И самое прискорбное что увидя это, заблуждение что это было правильным выбором только усугубится.
26 май 14, 12:37    [16072645]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить