Мы пытаемся установить связь между двумя экземплярами SQL в одном SQL Engine через Service Broker, следуя инструкциям из MSDN.
Чтобы упростить задачу, мы отправляем диалог с Encryption = OFF, поэтому нам не нужно иметь дело с главным ключом, сертификатом ... и он работает на локальной рабочей станции.
DECLARE @InitDlgHandle UNIQUEIDENTIFIER;
ОБЪЯВИТЬ @RequestMsg NVARCHAR (100);
НАЧАЛО СДЕЛКИ;
НАЧАТЬ ДИАЛОГ @InitDlgHandle
FROM SERVICE [// InstDB / 2InstSample / InitiatorService]
ОБСЛУЖИВАТЬ N '// TgtDB / 2InstSample / TargetService'
НА КОНТРАКТЕ [// BothDB / 2InstSample / SimpleContract]
С
ШИФРОВАНИЕ = ВЫКЛ;
SELECT @RequestMsg = N'Message for Target service. ';
ОТПРАВИТЬ НА РАЗГОВОР @InitDlgHandle
ТИП СООБЩЕНИЯ [// BothDB / 2InstSample / RequestMessage]
(@RequestMsg);
SELECT @RequestMsg AS SentRequestMsg;
совершение сделки;
GO
Однако после перехода на сервер с тем же сценарием целевая БД продолжает показывать «Не удалось найти закрытый ключ, сообщение не может быть доставлено» в трассировке SQL после того, как initDB отправит сообщение.
У меня такой вопрос, поскольку мы установили шифрование = ВЫКЛ. Почему в целевой БД отсутствует сертификат?
Мы используем SQL 2005 SP2, Windows 2003
Ценится за любой ввод.