2010-04-08 7 views
1

Я получаю эту ошибку в моей таблице sys.transmission_queue всякий раз, когда я пытаюсь отправить сообщение Service Service SQL между двумя разными серверами SQL Server. (Т.е. базы данных находятся на двух разных физических машинах)Справка об ошибке с сообщением Service Broker

Dialog security is unavailable for this conversation because there is no security 
certificate bound to the database principal (Id: 5). 
Either create a certificate for the principal, or specify ENCRYPTION = OFF 
when beginning the conversation 

Когда эта ошибка относится к «основная база данных», что это в виду? («основная» база данных? dbo user?) Я использовал команду CREATE CERTIFICATE, скопировал сертификат и создал тот же самый именованный сертификат на другом сервере с файлом backup .cer с первого сервера, но я продолжаю получать это сообщение.

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

FYI, в моей среде разработки, как исходные, так и целевые базы данных находились на одном физическом сервере и том же экземпляре SQL, и все работало нормально.

ответ

2

Ошибка относится к пользователю в базе данных, на которой размещен сервис Service Broker (select name from sys.database_principals where principal_id = 5).

Помимо экспорта сертификата на целевой сервер, вам также необходимо импортировать сертификат целевого сервера, связать его с пользователем и создать привязку удаленной службы, чтобы сообщить Service Broker, который локальный пользователь представляет удаленную службу. Следующие 2 статьи помогут вам: Service Broker Dialog Security и Securing a dialog with certificates.

+1

Другим ресурсом, если у вас есть веб-учетная запись SQL Server Central, является следующая статья: http://www.sqlservercentral.com/articles/Service+Broker/2797/ – yanigisawa

+1

Оказывается, я создал службу Инициирования с: "АВТОРИЗАЦИЯ "; вместо того, чтобы оставлять этот пункт. Как только я упал и воссоздал службу Инициирования без заявления AUTHORIZATION, он начал работать. – yanigisawa

1

В дополнение к тому, что сказал Pawel, я также рекомендую попробовать SSBDIAGNOSE tool. Используйте опцию КОНФИГУРАЦИЯ, и он точно скажет вам, какие пользователи должны получать сертификаты, в какой базе данных, а также анализировать возможности конечных точек, маршруты и разрешения.

+0

Спасибо Ремусу за инструмент. Это не помогло нам найти точную проблему, но было удобно идентифицировать дублируемую проблему service_broker_guid, которую мы имели, когда мы восстанавливали резервную копию с другого сервера. – yanigisawa

Смежные вопросы