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

Откуда:
Сообщений: 14
Доброго времени суток!
Задача следующая:
Сделать так , чтобы из определенной бд на определенном сервере-отправителе была возможность отправлять сообщения через очередь
в определенную бд на другом сервере-получателе сообщение в очередь-получатель.
Сервер-получатель прилинкован к серверу-отправителю.
Нужно ли создавать диалог и в дополнение Route и Remote service + сертификаты с master-key или же можно сделать без этого?
Спасибо!
21 сен 17, 00:17    [20810610]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Валентин дядька,

Диалог для обмена нужен всегда, а вот как вы организуете безопасность транспорта и безопасность диалога зависит от ваших нужд.
21 сен 17, 08:45    [20810881]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

Откуда:
Сообщений: 14
felix_ff, Я имею ввиду если мы прилинковали сервер можно ли передавать сообщения как если бы мы передавали сообщения в другую бд в рамках одного сервера?
21 сен 17, 10:34    [20811175]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3246
Валентин дядька,

Сервис брокер не использует linked server. Все остальное создавать надо.
21 сен 17, 10:37    [20811194]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

Откуда:
Сообщений: 14
Ennor Tiegael,Спасибо!
21 сен 17, 10:59    [20811325]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

Откуда:
Сообщений: 14
В чем может быть причина того, что сервис брокер на одной стороне отправляет нормально сообщения а на другой стороне нет сообщений в очереди?(разные серверы в качестве кода был взят пример из документации msdn)
22 сен 17, 21:09    [20817338]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Валентин дядька,

криво настроили маршрут к примеру.
Как вы убедились что сообщения от отправляющего сервера успешно уходят?
22 сен 17, 23:06    [20817521]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

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

Посмотрел вьюху transmission_queue она пустая.
23 сен 17, 11:16    [20817854]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Валентин дядька,

А в sys.conversation_endpoins у вас диалог с каким статусом?

Ну и заодно а не монолог ли у вас случаем? После отправки со стороны инициатора я надеюсь end conversation сразу не делаете?
23 сен 17, 14:42    [20817999]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

Откуда:
Сообщений: 14
felix_ff,
Сейчас посмотреть эту вьюху немогу но вообще да- делаю сразу завершение конверсейшна, а что, ненадо?
23 сен 17, 16:19    [20818086]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Валентин дядька,

это плохая практика. первым диалог должен закрывать получатель.

Можете ознакомится тут описана проблема f&f, очень вероятно что это именно ваш случай.
http://www.davewentzel.com/content/service-broker-demystified-fire-and-forget-anti-pattern
23 сен 17, 21:09    [20818336]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Валентин дядька
felix_ff,
Сейчас посмотреть эту вьюху немогу но вообще да- делаю сразу завершение конверсейшна, а что, ненадо?


это типа как послать на *** хулигана - послал и убежал
24 сен 17, 10:13    [20818729]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

Откуда:
Сообщений: 14
felix_ff,
Спасибо, завтра смогу проверить.Сообщу о результатах.А как завершать диалог на другой стороне? ведь другая сторона не знает о том какой идентификатор диалога у инициатора.Или его просто не надо закрывать? вообщем я ещё посмотрю профайлером,но сначала, когда я запустил в первые разы в очередь получателя приходили сообщения и я их успешно мог извлекать, а на след день то ли админы чё то делали то ещё что-то вообщем до очереди получателя ничего не дошло
25 сен 17, 00:35    [20819546]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

Откуда:
Сообщений: 14
felix_ff,
И кстати да - Вы правы получается у меня монолог
25 сен 17, 01:21    [20819562]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Валентин дядька,

получатель "получает" идентификатор диалога используя receiveю
У вас процедура активации (на очереди получателя), или программная логика вычитывающая очередь получателя должна быть настроена так что бы используя receive получать идентификатор беседы и после необходимых действий с сообщением закрывать диалог со стороны получателя;

а процедура активации на стороне инициатора должна в случае поступления 'EndDialog' закрывать диалог со своей.

концепция правильной организации монолога в целом описана по ссылке что я привел ранее.
25 сен 17, 02:29    [20819576]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

Откуда:
Сообщений: 14
felix_ff,
Теперь сообщения повисли в transmission_queue и в профайлере со стороны получателя след картина:

Broker:Message Classify Could not forward the message because forwarding is disabled in this SQL Server instance. 20 2017-09-25 10:50:50.147
Broker:Message Undeliverable The message could not be delivered because it could not be classified. Enable broker message classification trace to see the reason for the failure. sa 20 2017-09-25 10:50:50.150
Не нашел инфы про forwarding
25 сен 17, 10:56    [20819956]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Валентин дядька
felix_ff,
Теперь сообщения повисли в transmission_queue и в профайлере со стороны получателя след картина:

Broker:Message Classify Could not forward the message because forwarding is disabled in this SQL Server instance. 20 2017-09-25 10:50:50.147
Broker:Message Undeliverable The message could not be delivered because it could not be classified. Enable broker message classification trace to see the reason for the failure. sa 20 2017-09-25 10:50:50.150
Не нашел инфы про forwarding
25 сен 17, 11:27    [20820070]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Валентин дядька,

https://technet.microsoft.com/en-us/library/ms166098(v=sql.105).aspx
https://technet.microsoft.com/en-us/library/ms186332(v=sql.105).aspx

https://technet.microsoft.com/en-us/library/ms166115(v=sql.105).aspx
25 сен 17, 13:51    [20820641]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

Откуда:
Сообщений: 14
felix_ff,
Спасибо, но я просто пересоздал все объекты.Теперь нормально но смущает что приходят два сообщения при том что я convеrsation закрываю на принимающей стороне.Не сталкивались с таким?
25 сен 17, 16:57    [20821337]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
Валентин дядька,

что значит приходят два? два одинаковых что посылаете?

Вы учтите что инструкция END CONVERSATION @conversation_handle - посылает сообщение специального типа в очередь обратной стороны диалога, а не просто закрывает беседу с одной стороны.

т.е. по хорошему когда вы делаете
  begin dialog conversation @conversation_handle
  from service [initiator] to service 'target'
  on contract [default]
  with encryption off;

  send on conversation @conversation_handle ('this is test');
  end conversation @conversation_handle;


в очередь сервиса "target" придет два сообщения, "this is test" и 'http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog'
25 сен 17, 19:19    [20821716]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Валентин дядька
Member

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

Да я про сообщение этого типа и имел ввиду.Можно ли изменить чтоб оно не приходило в очередь получателя?
26 сен 17, 05:15    [20822312]     Ответить | Цитировать Сообщить модератору
 Re: Service broker очереди для удаленных серверов  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Валентин дядька
felix_ff,

Да я про сообщение этого типа и имел ввиду.Можно ли изменить чтоб оно не приходило в очередь получателя?


так фильтруйте по типу
26 сен 17, 10:39    [20822842]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить