Я пытаюсь выяснить, как настроить надлежащую безопасность для отправки сообщения из одной базы данных в другую. У меня проблема в том, что отправляющая служба базы данных привязана к указанному c пользователю через авторизацию, потому что эта служба также отправляет сообщения на привязку удаленной службы.
Итак, вот мой сервис:
CREATE SERVICE [WebRequestService]
AUTHORIZATION WebDbSSBUser
ON QUEUE [dbo].[WebRequestQueue]
([RequestContract],[CountRequestContract],[OrderRequestContract]);
GO
Я хочу отправить сообщение от этой службы другой службе в другой локальной базе данных. Этот сервис:
CREATE SERVICE [AppRequestService]
AUTHORIZATION DBO
ON QUEUE [dbo].AppRequestQueue
([RequestContract]);
AppRequestService не должен отправлять сообщения на какие-либо удаленные привязки, поэтому он авторизован DBO. Когда я пытаюсь отправить:
declare @handle uniqueidentifier
begin dialog conversation @handle from service [WebRequestService] to service 'AppRequestService' on contract [RequestContract];
send on conversation @handle message type [AppRequest] (@item_data)
, я получаю это в журнале передачи:
Возникла исключительная ситуация при постановке в очередь сообщения в целевой очереди. Ошибка: 916, состояние: 3. Участник сервера «S-1-9-3-1771139253-1243890769-2689325230-2851569174» не может получить доступ к базе данных «appmembership» в текущем контексте безопасности.
sid - это WebDbSSBUser.
Не знаю, как мне настроить разрешения, и я бы предпочел не создавать отдельную очередь.