Share via


Service Broker ID 관리

각 데이터베이스에는 Service Broker 메시지를 해당 데이터베이스로 라우팅하는 데 사용된 고유한 식별자가 있습니다. 이 항목에서는 Broker ID, Service Broker가 메시지의 잘못된 전달을 막는 방법, Broker ID 관리에 사용할 수 있는 옵션에 대해 설명합니다.

Service Broker 식별자

각 데이터베이스에는 Service Broker 식별자가 있습니다. sys.databases 카탈로그 뷰의 service_broker_guid 열은 인스턴스의 각 데이터베이스에 대한 Service Broker 식별자를 보여 줍니다. Service Broker 라우팅은 Service Broker 식별자를 사용하여 대화에 대한 모든 메시지가 동일한 데이터베이스로 배달되도록 보장합니다. 따라서 Service Broker 식별자는 동일한 네트워크의 모든 인스턴스에서 고유해야 합니다. 그렇지 않으면 메시지가 잘못 전달될 수 있습니다.

Service Broker 메시지 배달

Service Broker 식별자가 네트워크의 모든 데이터베이스에 대해 고유하도록 하기 위해 SQL Server는 데이터베이스에서 Service Broker 메시지 배달을 비활성화하는 메커니즘을 제공합니다. 메시지 배달이 데이터베이스에서 비활성화되면 해당 데이터베이스에서 보낸 모든 메시지가 데이터베이스의 전송 큐에 남아 있습니다. 뿐만 아니라 Service Broker는 해당 데이터베이스의 서비스를 메시지 수신에 사용할 수 있는 것으로 간주하지 않습니다. Service Broker 라우팅이 인스턴스 내의 대상 서비스를 찾을 때는 이러한 서비스가 고려되지 않습니다.

Service Broker 메시지 배달을 비활성화하면 메시지가 잘못 전달될 위험 없이 문제 해결이나 데이터 복구 용도로 데이터베이스 백업을 안전하게 연결할 수 있습니다. sys.databasesis_broker_enabled 열은 각 데이터베이스에 대한 Service Broker 메시지 배달의 현재 상태를 보여 줍니다.

SQL Server는 새 데이터베이스마다 새 Service Broker 식별자를 생성합니다. 식별자가 새 식별자이므로 SQL Server는 새 데이터베이스에서 Service Broker 메시지 배달을 안전하게 활성화할 수 있습니다. 네트워크의 다른 데이터베이스가 동일한 Service Broker 식별자를 사용하면 안 됩니다.

데이터베이스를 연결하거나 복원할 때는 지정된 Service Broker 식별자를 가진 데이터베이스만 메시지 배달을 활성화하도록 주의해야 합니다. 그렇지 않으면 메시지가 잘못 전달될 수 있으며 잘못된 데이터베이스 복사본에서 대화에 대한 처리가 수행될 수 있습니다.

식별자 및 메시지 배달 관리

CREATE DATABASE 명령, ALTER DATABASE 명령 및 RESTORE DATABASE 명령에는 Service Broker 메시지 배달을 활성화하고 데이터베이스에 대한 Service Broker 식별자를 변경할 수 있는 옵션이 있습니다.

데이터베이스를 연결하거나 복원할 때는 Service Broker 식별자와 메시지 배달 상태가 기본적으로 변경되지 않습니다. 일반적으로 복구 목적으로 백업을 복원하거나, 미러 쌍을 구성하거나, 대기 서버에 대한 로그 전달을 설정하는 경우에는 Service Broker 식별자를 변경하지 않습니다. 데이터베이스 복사본을 만들 때는 인스턴스 식별자를 변경합니다.

식별자와 메시지 배달을 관리할 수 있는 옵션은 다음 4가지입니다.

  • ENABLE_BROKER - 이 옵션은 Service Broker 메시지 배달을 활성화하고 데이터베이스에 대한 기존 Service Broker 식별자를 유지합니다.

[!참고] 어느 데이터베이스에서나 SQL Server Service Broker를 활성화하려면 데이터베이스 잠금이 필요합니다. msdb 데이터베이스에서 Service Broker를 활성화하려면 먼저 SQL Server 에이전트를 중지하여 Service Broker에서 필요한 잠금을 가져올 수 있도록 합니다.

  • DISABLE_BROKER - 이 옵션은 Service Broker 메시지 배달을 비활성화하고 데이터베이스에 대한 기존 Service Broker 식별자를 유지합니다.
  • NEW_BROKER - 이 옵션은 Service Broker 메시지 배달을 활성화하고 데이터베이스에 대한 새 Service Broker 식별자를 생성합니다. 데이터베이스의 기존 대화는 새 인스턴스 식별자를 사용하지 않으므로 이 옵션은 오류를 사용하여 이러한 대화를 종료합니다.
  • ERROR_BROKER_CONVERSATIONS - 이 옵션은 Service Broker 메시지 배달을 활성화하고 데이터베이스에 대한 기존 Service Broker 식별자를 유지합니다. Service Broker는 오류를 사용하여 데이터베이스의 모든 대화를 종료합니다.

그러나 지정된 옵션에 관계없이 SQL Server는 두 데이터베이스에 대해 동일한 Service Broker 식별자를 갖는 해당 두 데이터베이스가 동일한 SQL Server 인스턴스에서 메시지 배달을 활성화하도록 허용하지 않습니다. 기존 데이터베이스와 동일한 Service Broker 식별자를 갖는 데이터베이스를 연결하는 경우 SQL Server는 연결할 데이터베이스에서 Service Broker 메시지 배달을 비활성화합니다.

데이터베이스 연결 옵션에 대한 자세한 내용은 CREATE DATABASE(Transact-SQL)ALTER DATABASE(Transact-SQL)를 참조하십시오. 데이터베이스에서 Service Broker 메시지 배달을 활성화하는 방법에 대한 지침은 방법: 데이터베이스에서 Service Broker 메시지 배달 활성화(Transact-SQL)를 참조하십시오.

참고 항목

관련 자료

ALTER DATABASE(Transact-SQL)
CREATE DATABASE(Transact-SQL)
RESTORE(Transact-SQL)
sys.databases(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기