Отправка и получение сообщений компонента SQL Server Service Broker в рамках вложенных транзакций - PullRequest
1 голос
/ 15 марта 2011

Я бы хотел использовать SQL Server 2008 Service Broker для регистрации хода выполнения длительной (до 30 минут) транзакции, которая динамически создается с помощью хранимой процедуры. У меня две цели:

1) Чтобы в реальном времени регистрировать динамически созданные операторы, составляющие транзакцию, чтобы можно было дистанционно контролировать ход транзакции,

2) Чтобы можно было просмотреть шаги, которые составляли транзакцию, до момента, когда мог произойти сбой, требующий отката.

Я не могу просто PRINT (или RAISERROR (msg, 0,0)) на консоль, потому что я хочу записать сообщения о ходе выполнения в таблицу (и сохранить этот журнал, даже если откат сохраненной процедуры).

Но я понимаю, что сообщения не могут быть получены из очереди до тех пор, пока поток отправки не завершит свою работу (внешняя транзакция). Это правда? Если да, какие варианты у меня есть?

1 Ответ

0 голосов
/ 31 марта 2011

Это правда, что вы не можете читать сообщения из очереди службы, пока транзакция не будет зафиксирована.

Вы можете попробовать другие методы:

  1. использовать процедуру sql clr для отправки сообщения удаленного взаимодействия .net приложению .net, которое получает сообщения, и регистрировать их.,

  2. используйте процедуру sql clr для записи текста или другого файла журнала на диск.

  3. Какой-то другой метод ...

С уважением

AJ

...