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

Откуда: Гималай
Сообщений: 2101
Приветствую всех.
Сервер БД MS SQL Server 2008 R2.

Есть ли возможность запуска хранимок без ожидания результата выполнения в T-SQL?
И есть ли еще возможность определения количества работающих в данный момент определенной хранимки?

Спасибо.
16 июл 12, 11:21    [12871513]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
svenom
Member [заблокирован]

Откуда:
Сообщений: 3242
Опишите подробнее, зачем вам это нужно, и кто их собирается вызывать. Скорее всего, ваше вопрос находится за рамками SQL Server, и его надо решать на стороне приложения.
16 июл 12, 11:31    [12871576]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5116
service broker?
16 июл 12, 11:32    [12871588]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
bacalavr
Member

Откуда:
Сообщений: 311
orunbek,

job
16 июл 12, 11:33    [12871592]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
В t-sql хранимке нужно прочитать записи из очереди Service Broker, и запуск хранимки с передачей параметров

предыдущяя тема
16 июл 12, 11:33    [12871597]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
Забыл добавить без Service Broker'а, так как проблема именно в том, что SB не запускает столько хранимок, сколько было указано в MAX_QUEUE_READERS. В предыдущей теме писал про проблему
16 июл 12, 11:36    [12871619]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
bacalavr
orunbek,

job


Создать таблицу очереди? В которую будут добавляться "задания" а запуск путем перидического запуска job'а?
Если так, то есть риск возникновения мертвых блокировок, из-за чего и перешел к SB.

Опишу подробнее проблему.
Есть очередь в Service Broker, и CLR-хранимка которая читает сообщения по одному из этой очереди инструкцией:
WAITFOR (RECEIVE TOP (1) conversation_handle, message_type_name, message_body FROM SB_Queries_TargetQueue), TIMEOUT 500

Чтение выполняется в транзакции, после выборки записи из очереди транзакция закрывается и затем данные обрабатываются в различных web-сервисах, в зависимости от типа запроса.
Длительность обработки может быть различной. В лучшем случае 1-1,5 секунд, в худшем до минуты доходит. Это зависит от поставщика web-сервиса.
При этом проблемы задержок влияют на обработку записей из очереди Service Broker.
К примеру активировано хранимок 5 штук, которые прочитали записи из очереди и не блокируют очередь, а длительное выполнение связано с web-сервисом. А в этот момент в очереди "простаивают" более 10-50ти записей.
MAX_QUEUE_READERS установлен в 200.

Из-за этого хотел реализовать следующий вариант.
Когда обработчик очереди реализован в T-SQL хранимке, которая считывает записи из очереди и передает их CLR-хранимке, непосредственно делающей обработку в web-сервисе. При этом не дожидаясь результата выполнения.
16 июл 12, 11:43    [12871675]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
orunbek
Создать таблицу очереди? В которую будут добавляться "задания" а запуск путем перидического запуска job'а?
Если так, то есть риск возникновения мертвых блокировок, из-за чего и перешел к SB.
Вы просто не уменете их готовить (с)
SB это просто надстройка, сахарок, чтоб не писать ласапеды.

Вы чё не можне на .Net написать генерацию потоков? (На 4м практически вообще писать ничего не надо дополнительного)
Надеюсь никто не подумал делать это в SqlClr.

Хотя вам говорить бесполезно, вы непробиваемый.
16 июл 12, 13:29    [12872313]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
Mnior
orunbek
Создать таблицу очереди? В которую будут добавляться "задания" а запуск путем перидического запуска job'а?
Если так, то есть риск возникновения мертвых блокировок, из-за чего и перешел к SB.
Вы просто не уменете их готовить (с)
SB это просто надстройка, сахарок, чтоб не писать ласапеды.

Может быть не умею готовить, но как говорится "терпение и труд", в начале работы с MS SQL, я и то меньше умел, но документация, интернет и форумы помогли много чему научится

Mnior
...
Вы чё не можне на .Net написать генерацию потоков? (На 4м практически вообще писать ничего не надо дополнительного)
Надеюсь никто не подумал делать это в SqlClr.

В начале такой вариант и думал сделать, использовать свои таблицы очередей и в основном CLR-хранимке создавать потоки для обработки запросов в web-сервисах

Mnior
...
Хотя вам говорить бесполезно, вы непробиваемый.

Зачем использовать такие слова, я в начале и писал же что именно по SB у меня опыт маленький, это первый проект
в котором использовал SB для обработки очередей.
Но... я не "обижаюсь" ;-) буду чтением документации, поискам по просторам инета буду дальше осваивать SB
и Вам спасибо, за Ваши советы
16 июл 12, 15:49    [12873142]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
orunbek
Зачем использовать такие слова ...
То, что человек тупо игнорирует то, что он не понял, когда лично ему говорят, мной воспринимается как самая крайняя степень неуважения (хотя правильнее - крайняя степень глупости).
Хотя этим болееют очень многие. И не понимают очевидности своей ошибки.
Так что это не оскорббление, это просто наблюдение со стороны, что стратегия общения не эффективна.
И всего то.

C другой стороны общение не эффективно, когда не учитывается, что на некоторые слова чел бросается как на красную тряпку, неправильно проинтерпретировав, и может обидеться или ещё чего. Но нереально сложно подстраиваться под чужое "мышление", притом в основном "игра не стоит свеч". Но из-за последнего наоборот, ставятся условия, при котором легко было "выудить" "чужака" (самолётопоклонника).
16 июл 12, 19:16    [12874357]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Если вы не знаете:
Job можоно на TSQL нормально создать, запустить (асинхронно) и при этом по окончанию он самоуничтожится.
Только всё это мало эффективно, IMXO.

Просто считается, что это должена делать клиентская программа отдельно.
По идее, то что порождает запись/сообщение с клиента (тоснее с аппликейшн сервера), должна по сути инициализировать поток, у себя. SQL cервер не должен этим заниматься - он тупо база.
И большинство архитекторов скажут что у вас что-то не то.
16 июл 12, 19:35    [12874413]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
orunbek
Member

Откуда: Гималай
Сообщений: 2101
Mnior
orunbek
Зачем использовать такие слова ...
То, что человек тупо игнорирует то, что он не понял, когда лично ему говорят, мной воспринимается как самая крайняя степень неуважения (хотя правильнее - крайняя степень глупости).
Хотя этим болееют очень многие. И не понимают очевидности своей ошибки.
Так что это не оскорббление, это просто наблюдение со стороны, что стратегия общения не эффективна.
И всего то.

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


Уважаемый, я с самого начала пишу что опыта работы с SB минимален.
И если я не понимаю некоторые вещи связанные с SB, это не означает что я ГЛУПЫЙ (как вы пишете "крайняя глупость" ) тем более какое-либо неуважение.
Если бы вообще было бы какое-либо неуважение, я бы и не создавал бы данный пост, спрашивая совета у бывалых.
И если у человека отсутствует определенный опыт, или знания в определенной области, и это указывает на его крайнюю степень глупости, то можно считать что можно всех людей во всем мире можно отнести к глупцам. Из-за отсутствия знаний или не понимания определенных вещей в астрофизике, или квантовой физике и т.д.
Так что, извините меня, мне больше не интересно поддерживать "беседу", тем более "чувствую" последние посты выходят за рамки созданной проблемы.
16 июл 12, 21:42    [12874780]     Ответить | Цитировать Сообщить модератору
 Re: Асинронный запуск хранимок в T-SQL  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
orunbek
я с самого начала пишу что опыта работы с SB минимален
И что, неужели SB определяет ошибки в мышлении/логике.

Мде, я предупреждал, что это не лечится.
И почему я не удивлён что больше всего постов по Visual Basic
17 июл 12, 03:14    [12875462]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить