powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно вычислить Reader'а Service Brocker'а
3 сообщений из 3, страница 1 из 1
Как правильно вычислить Reader'а Service Brocker'а
    #35610972
mike909
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Натолкнулся на грабельки, про которые давно знал, но за полтора года только сегодня наступил.

Итак по порядку.
Есть Reader SB, выполняющий загрузку данных 24х7.

Есть задача (запускается SQL агентом) обеспечивающая движение окна и т.д. и т.п.
В этой задаче происходит следующее
1) Выключаю активацию очередей SB. В Reader'ах стоит безусловный выход по этому условию.
Если не вырубить, то можно и не дождаться когда Reader'ы свалят.
2) Жедм отвала всех процессов или переход их в неактивное состояние
3) Захват базы в монопольное использование
4) Двигаем окнами и т.д. и т.п.
5) Отпускаем базу
6) Включаем очереди SB.
7) Далее не интересно ...

Что произошло.
В одной из SP, запущенной из под Reader'а есть защита кусочка кода
Код: plaintext
1.
2.
3.
4.
5.
  set @isLdr = NULL
  SELECT @isLdr = case [name] when 'BLA_Queue' then  1  else  0  end
  FROM sys.dm_broker_activated_tasks as  bat
  INNER JOIN sys.service_queues as sq on bat.queue_id = sq.[object_id]
  WHERE bat.spid = @@SPID

которая работает не правильно если вырубить активацию Reader'ов.
Проблема в том, что после выполнения
ALTER QUEUE BLA.BLA_Queue WITH STATUS = ON , ACTIVATION ( STATUS = OFF )

Из sys.dm_broker_activated_tasks исчезнут все упоминания о наших Reader'ах, запущенных для этой очереди.

Но вот что интересно, в логе SQL'я есть следующее сообщение

Код: plaintext
1.
2.
Message
The activated proc [BLA].[BulkInsertBlaBla] running on queue DB.BLA.BLA_Queue output the following:  'procedure [BLA].[Update_BLA_BLA] must be called only from Service Broker'

Из чего я делаю вывод, что SQL знает что запуск SP был из под Reader'а.

Вопрос, как выпытать у него эту информацию ?

PS. Передача через параматры не катит, т.к. уровень вложенности SP близок к 15
...
Рейтинг: 0 / 0
Как правильно вычислить Reader'а Service Brocker'а
    #35612776
mike909
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, решения нет ?
Или я слишком туманно описал проблему ?
Попробую покороче ...
Если выполнить команду
Код: plaintext
1.
ALTER QUEUE BLA.BLA_Queue WITH STATUS = ON , ACTIVATION ( STATUS = OFF )
То после нее исчезают записи из системной въюхи "sys.dm_broker_activated_tasks " о выполняемых процессах для этой очереди.

Тем не менее SQL после этого точно знает, что процесс был активирован Service Brocker'ом.

Вопрос - как добыть туже информацию ?
...
Рейтинг: 0 / 0
Как правильно вычислить Reader'а Service Brocker'а
    #35663902
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mike909,

Сначала добыть, а потом уж отключить. :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как правильно вычислить Reader'а Service Brocker'а
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]