2010-04-08 7 views
1

두 SQL Server 서버간에 SQL Service Broker 메시지를 보내려고 할 때마다 sys.transmission_queue 테이블에서이 오류가 발생합니다. (즉, 데이터베이스가 서로 다른 두 개의 물리적 컴퓨터에 있음)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 

이 오류는 "데이터베이스 주체"가 무엇을 나타 냅니까? ("master"database? dbo user?) CREATE CERTIFICATE 명령을 사용하여 인증서를 백업하고 첫 번째 서버의 백업 .cer 파일과 함께 다른 서버에 동일한 명명 된 인증서를 만들었지 만 계속 가져오고 있습니다. 메시지.

올바른 방향으로 나를 알려 주시면 도움이 될 것입니다. 나는 명백한 것을 놓치고 있어야합니다.

FYI, 내 개발 환경에서 초기화 데이터베이스와 대상 데이터베이스가 모두 동일한 실제 서버에 있고 동일한 SQL 인스턴스에 있으며 모든 것이 정상적으로 작동했습니다.

답변

2

오류는 Service Broker 서비스를 호스팅하는 데이터베이스의 사용자 (select name from sys.database_principals where principal_id = 5)를 나타냅니다.

대상 서버로 인증서를 내보내는 것 외에도 대상 서버의 인증서를 가져 와서 사용자와 연결하고 원격 서비스 바인딩을 만들어 Service Broker에게 어떤 로컬 사용자가 원격 서비스를 나타내는 지 알려줄 필요가 있습니다. 다음 2 개의 기사가 도움이 될 것입니다 : Service Broker Dialog SecuritySecuring a dialog with certificates.

+1

다른 리소스 (SQL Server Central 웹 계정이있는 경우) : http://www.sqlservercentral.com/articles/Service+Broker/2797/ – yanigisawa

+1

시작 서비스를 만들었습니다 with : "AUTHORIZATION "; 이 절을 빠져 나가기보다. AUTHORIZATION 문을 사용하지 않고 Initiating 서비스를 삭제하고 다시 작성하면 작업이 시작되었습니다. – yanigisawa

1

Pawel이 말했던 것 외에도 SSBDIAGNOSE 도구를 사용해 보는 것이 좋습니다. CONFIGURATION 옵션을 사용하면 어떤 사용자가 인증서를 필요로하는지 정확히 알 수 있고, 데이터베이스의 끝점 연결, 경로 및 사용 권한을 분석 할 수 있습니다.

+0

도구에 대한 Remus에 감사드립니다. 결국 우리가 정확한 문제를 찾는데 도움이되지는 못했지만, 다른 서버에서 백업을 복구 할 때 중복 된 service_broker_guid 문제를 식별하는 것이 편리했습니다. – yanigisawa

관련 문제