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

Откуда: Київ
Сообщений: 10428
под тем же юзером, который запихнул в очередь исходное сообщение?
25 июл 13, 19:37    [14618398]     Ответить | Цитировать Сообщить модератору
 Re: SQL Broker: как выполнить в процедуре активации процедуру?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Встроенных механизмов, вроде, нет. Передавать юзера в теле сообщения и соответственно менять контекст, мы так делали (на 2005, во всяком случае).
25 июл 13, 19:47    [14618423]     Ответить | Цитировать Сообщить модератору
 Re: SQL Broker: как выполнить в процедуре активации процедуру?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Ennor Tiegael
Встроенных механизмов, вроде, нет. Передавать юзера в теле сообщения и соответственно менять контекст, мы так делали (на 2005, во всяком случае).


да, думаю как бороться со следующей ситуацией, попал в результате экспериментов:

юзер (sa или другой), выполняет скрипт, который засылает сообщение, в процедуре активации возникает ошибка при попытке переключиться в контекст юзера sa, причем эта ошибка не ловится try-catch, и соответственно, на этом сообщении вырубает очередь в состояние disabled.
А хотелось бы если нельзя переключить контекст - пропустить сообщение и выбирать следующее.

Как бороться с этой фигней?
26 июл 13, 13:03    [14621588]     Ответить | Цитировать Сообщить модератору
 Re: SQL Broker: как выполнить в процедуре активации процедуру?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Winnipuh
в процедуре активации возникает ошибка при попытке переключиться в контекст юзера sa, причем эта ошибка не ловится try-catch

А если запустить процедуру отдельно, ошибка ловится?
Не смог воспроизвести описанное поведение на простом тесте:
create proc test_sa
as
begin try
   execute as login = 'sa';
   print current_user;
end try
begin catch
   print error_message();
end catch;
go
exec test_sa;
go
drop proc test_sa;
go

В блок catch попадаем, всё хорошо. Поведение для очереди не проверял.
26 июл 13, 13:14    [14621650]     Ответить | Цитировать Сообщить модератору
 Re: SQL Broker: как выполнить в процедуре активации процедуру?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
да, спасибо, все ок, там в одном месте стояло переключение через

setuser
26 июл 13, 14:08    [14622010]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить