적용 대상:SQL Server
Azure SQL Managed Instance
Service Broker 메시지 전달을 사용하면 SQL Server 인스턴스가 인스턴스 외부에서 전달된 메시지를 받아서 다른 인스턴스로 보낼 수 있습니다.
관리자는 메시지 전달을 사용하여 다음을 수행할 수 있습니다.
서로 다른 트러스트 도메인의 서버 간에 연결을 제공합니다.
도메인에 대한 라우팅 정보를 보유하는 단일 중앙 집중식 인스턴스를 만들어 관리를 간소화합니다.
여러 인스턴스 간에 작업을 배포합니다.
전달을 사용하도록 설정하면 라우팅 테이블 msdb.sys.routes 이 다른 인스턴스에서 도착하는 메시지를 전달할지 여부를 결정합니다. 일치하는 경로의 주소가 없 LOCAL으면 SQL Server는 지정된 주소로 메시지를 전달합니다. 그렇지 않으면 메시지가 로컬로 전달됩니다.
각 Service Broker 메시지에는 최대 수명과 메시지가 전달된 횟수가 포함됩니다. 인스턴스가 메시지를 전달하면 해당 인스턴스는 메시지의 개수를 늘깁니다. 메시지가 최대 수명을 초과하면 전달 인스턴스가 메시지를 무시합니다. 이 전략은 라우팅 루프가 존재할 수 있는 상황에서 문제를 방지하는 데 도움이 됩니다.
정보 전달 및 신뢰할 수 있는 전송
메시지를 전달하는 인스턴스는 보낸 사람에게 메시지를 승인하지 않습니다. 최종 대상만 메시지를 승인합니다. 보낸 사용자가 일정 기간 후에 대상에서 승인을 받지 못하면 보낸 사용자가 메시지를 다시 시도합니다.
메시지 전달을 수행하는 인스턴스는 전달된 메시지를 저장할 필요가 없습니다. 대신 SQL Server는 메모리에 전달할 메시지를 보관합니다. 메시지 전달에 사용할 수 있는 메모리 양은 Service Broker 엔드포인트 구성의 일부로 지정됩니다. 이 전략을 통해 효율적인 상태 비저장 메시지를 전달할 수 있습니다. 메시지 전달을 수행하는 인스턴스가 실패하는 경우 메시지가 손실되지 않습니다. 각 메시지는 Service Broker 통신 프로토콜에 설명된 대로 최종 대상이 메시지를 승인할 때까지 항상 발신자에서 유지 관리됩니다.
관리 뷰 sys.dm_broker_forwarded_messages 에는 현재 인스턴스에서 전달 중인 메시지에 대한 정보가 포함되어 있습니다. 인스턴스는 전달되는 과정에서 메시지를 유지하지 않습니다. 이러한 메시지는 메모리에만 존재합니다. 메시지를 보낸 인스턴스와 메시지를 수신하는 인스턴스는 메시지를 유지합니다. 보내는 인스턴스는 수신 인스턴스가 메시지 수신을 승인할 때까지 메시지를 제거하지 않습니다.
보안 및 전달
Service Broker 메시지 전달에는 전달된 메시지의 암호를 해독하는 데 전달 인스턴스가 필요하지 않습니다. 따라서 대화에 참여하는 데이터베이스에만 대화 보안이 구성되어 있어야 합니다.
그러나 전송 보안은 SQL Server 인스턴스 간 연결에 적용되므로 각 SQL Server 인스턴스는 직접 통신하는 인스턴스에 대해 전송 보안을 올바르게 구성해야 합니다. 예를 들어 인스턴스 A와 인스턴스 B가 전달 인스턴스를 통해 통신하는 경우 인스턴스 A와 인스턴스 B 모두 전달 인스턴스에 대해 올바르게 구성된 전송 보안이 있어야 합니다. 인스턴스는 메시지를 직접 교환하지 않으므로 인스턴스에 서로 통신하도록 구성된 전송 보안이 없어야 합니다.