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

Откуда:
Сообщений: 3
Входные данные: пару таблиц, в которых сторонней программой помещаются данные (тип отчета, состояние выполнения запроса, время поступления и т.п.).
Задача: средствами sql server 2005 организовать чтение данных их этих таблиц (т.е. по сути тип отчета + входные параметры)
и многопоточную обработку (одновременная обработка до 5 запросов). При чем в момент запуска отчета на обработку необходимо из очереди выбирать запросы по приоритету и времени поступления на обработку.
Хранимые процедуры, выполняющие обработку и вывод результатов имеются. Каким образом лучше организовать очередь?
Думаю использовать server broker. Может у кого был опыт реализации подобных задач, помогите плиз.
27 дек 11, 13:06    [11832433]     Ответить | Цитировать Сообщить модератору
 Re: Server broker, многопоточность  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
Сервис брокер самое то. Опыт есть.
А в чём проблема то? Читаете форум, хэлп про сервис брокер и делаете.
27 дек 11, 14:45    [11833327]     Ответить | Цитировать Сообщить модератору
 Re: Server broker, многопоточность  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
смотрите CREATE QUEUE, OPEN DIALOG и т.д.
27 дек 11, 14:53    [11833387]     Ответить | Цитировать Сообщить модератору
 Re: Server broker, многопоточность  [new]
anita1
Member

Откуда:
Сообщений: 3
может быть загрузка этих 5 потоков, в исходные таблицы поступать новые сообщения об обработке. когда освобождается какой либо поток, необходимо из тех входных данных, что не обработаны и не отправлены на обработку, выбрать не первый в очереди, а с более высоким приоритетом. я не увидела нигде просто, как сообщению в очереди можно присваивать какой-либо приоритет. если так нельзя, то как вариант можно видимо просто посылать сообщение в очередь, что есть запрос на обработку, а затем уже в хранимой процедуре, которую начнет выполнять брокер, выбирать из всех запросов наиболее приоритетное и пришедшее первое по времени. единственное что надо аккуратно читать и изменять состояния обработки (чтобы один и тот же запрос не выполнялся несколько раз, например)
27 дек 11, 15:24    [11833663]     Ответить | Цитировать Сообщить модератору
 Re: Server broker, многопоточность  [new]
anita1
Member

Откуда:
Сообщений: 3
Устанавливаю параметры для очереди:

ALTER QUEUE [TargetQueue]
WITH
RETENTION = ON,
ACTIVATION(
STATUS = ON,
PROCEDURE_NAME = AggRecalculate,
MAX_QUEUE_READERS = 5,
EXECUTE AS OWNER)
GO

Кидаю запросы. У меня на сервере обработка выполняется 5 потоками. На сервере заказчика происходит одновременная обработка всех запросов, сколько пришло в БД. В чем может быть проблема?
25 янв 12, 18:09    [11970702]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить