단원 1: 대화 개체 만들기

적용 대상: SQL Server(지원되는 모든 버전) Azure SQL Managed Instance

이 단원에서는 데이터베이스에서 대화를 지원할 수 있도록 하는 모든 개체를 만드는 방법을 배웁니다.

프로시저

Service Broker 활성화 및 AdventureWorks2008R2 데이터베이스로 전환

참고

예제는 SQL Server 2008 R2에서 유효성을 검사했습니다. AdventureWorks 샘플 데이터베이스AdventureWorks2008R2 샘플 데이터베이스를 사용하여 예제를 완료하는 것이 좋습니다.

SQL Server Service Broker는 현재 버전의 SQL Server에서 지원됩니다.

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 실행하여 AdventureWorks2008R2 데이터베이스에서 Service Broker를 사용하도록 설정하고 컨텍스트를 이 데이터베이스로 전환합니다.

        USE master;
        GO
        ALTER DATABASE AdventureWorks2008R2
              SET ENABLE_BROKER;
        GO
        USE AdventureWorks2008R2;
        GO
    

메시지 유형 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 실행하여 대화에 대한 메시지 유형을 만듭니다. Service Broker 개체는 여러 데이터베이스 엔진 인스턴스에서 참조되는 경우가 많으므로 Service Broker 개체의 이름은 대부분 URI 형식으로 지정됩니다. 이것은 이러한 개체가 여러 컴퓨터에서 고유하도록 하는 데 도움이 됩니다. 이러한 두 메시지 유형은 Service Broker에서 메시지가 올바른 형식의 XML 문서인지 여부만 확인하고 특정 스키마에 대해 XML의 유효성을 검사하지는 않도록 지정합니다.

        CREATE MESSAGE TYPE
               [//AWDB/1DBSample/RequestMessage]
               VALIDATION = WELL_FORMED_XML;
        CREATE MESSAGE TYPE
               [//AWDB/1DBSample/ReplyMessage]
               VALIDATION = WELL_FORMED_XML;
        GO
    

계약 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 실행하여 대화에 대한 계약을 만듭니다. 계약은 해당 계약을 사용하는 대화가 //AWDB/1DBSample/RequestMessage 유형의 메시지를 시작자에서 대상으로 보내고 //AWDB/1DBSample/ReplyMessage 유형의 메시지를 대상에서 시작자로 보내도록 지정합니다.

        CREATE CONTRACT [//AWDB/1DBSample/SampleContract]
              ([//AWDB/1DBSample/RequestMessage]
               SENT BY INITIATOR,
               [//AWDB/1DBSample/ReplyMessage]
               SENT BY TARGET
              );
        GO
    

대상 큐 및 서비스 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 실행하여 대상에 사용되는 큐와 서비스를 만듭니다. 큐는 테이블이나 뷰와 유사한 방식으로 같은 데이터베이스에서 참조되므로 큐 이름의 형식은 테이블이나 뷰 이름과 유사합니다. CREATE SERVICE 문은 서비스를 TargetQueue1DB와 연결합니다. 따라서 서비스로 전송되는 모든 메시지는 TargetQueue1DB에 전달됩니다. 또한 CREATE SERVICE는 앞에서 만든 //AWDB/1DBSample/SampleContract를 사용하는 대화만 이 서비스를 대상 서비스로 사용할 수 있도록 지정합니다.

        CREATE QUEUE TargetQueue1DB;
    
        CREATE SERVICE
               [//AWDB/1DBSample/TargetService]
               ON QUEUE TargetQueue1DB
               ([//AWDB/1DBSample/SampleContract]);
        GO
    

시작자 큐 및 서비스 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여 넣습니다. 그런 다음 실행하여 시작자에 사용되는 큐와 서비스를 만듭니다. 계약 이름이 지정되지 않았기 때문에 다른 서비스는 이 서비스를 대상 서비스로 사용할 수 없습니다.

        CREATE QUEUE InitiatorQueue1DB;
    
        CREATE SERVICE
               [//AWDB/1DBSample/InitiatorService]
               ON QUEUE InitiatorQueue1DB;
        GO
    

다음 단계

//AWDB/1DBSample/InitiatorService//AWDB/1DBSample/TargetService 간의 대화를 지원하도록 AdventureWorks2008R2를 성공적으로 구성했습니다. 이제 이 구성을 사용하는 대화를 완료합니다. 자세한 내용은 단원 2: 대화 시작 및 메시지 전송을 참조하세요.

추가 정보