단원 1: 대상 데이터베이스 만들기

적용 대상:SQL ServerAzure SQL Managed Instance

이 단원에서는 대상 데이터베이스를 만들고 시작자 데이터베이스에 대한 종속성이 없는 모든 Service Broker 대상 개체를 만드는 방법을 배웁니다. 이러한 단계는 데이터베이스 엔진의 대상 인스턴스와 동일한 컴퓨터에서 실행 중인 Management Studio 복사본에서 실행합니다.

절차

Service Broker 엔드포인트 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여넣습니다. 그런 다음, 코드를 실행하여 이 데이터베이스 엔진 인스턴스에 대한 Service Broker 엔드포인트를 만듭니다. Service Broker 엔드포인트는 Service Broker 메시지가 전송되는 네트워크 주소를 설정합니다. 이 엔드포인트는 Service Broker 기본값인 TCP 포트 4022를 사용하며 데이터베이스 엔진의 원격 인스턴스가 Windows 인증 연결을 사용하여 메시지를 전송하도록 설정합니다.

    Windows 인증은 두 컴퓨터가 동일한 도메인 또는 신뢰할 수 있는 도메인에 있을 때 작동합니다. 컴퓨터가 신뢰할 수 없는 경우 기본 엔드포인트에 인증서 보안을 사용합니다. 자세한 내용은 방법: Service Broker 전송 보안에 대한 인증서 만들기(Transact-SQL)를 참조하세요.

        USE master;
        GO
        IF EXISTS (SELECT * FROM master.sys.endpoints
                   WHERE name = N'InstTargetEndpoint')
             DROP ENDPOINT InstTargetEndpoint;
        GO
        CREATE ENDPOINT InstTargetEndpoint
        STATE = STARTED
        AS TCP ( LISTENER_PORT = 4022 )
        FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS );
        GO
    

대상 데이터베이스, 마스터 키 및 사용자 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여넣습니다. CREATE MASTER KEY 문의 비밀번호를 변경합니다. 그런 다음 코드를 실행하여 이 자습서에 사용되는 대상 데이터베이스를 만듭니다. 기본적으로 새 데이터베이스에는 ENABLE_BROKER 옵션이 설정되어 있습니다. 또한 이 코드는 암호화 및 원격 연결을 지원하는 데 사용할 마스터 키와 사용자를 만듭니다.

        USE master;
        GO
        IF EXISTS (SELECT * FROM sys.databases
                   WHERE name = N'InstTargetDB')
             DROP DATABASE InstTargetDB;
        GO
        CREATE DATABASE InstTargetDB;
        GO
        USE InstTargetDB;
        GO
        CREATE MASTER KEY
               ENCRYPTION BY PASSWORD = N'<EnterStrongPassword1Here>';
        GO
        CREATE USER TargetUser WITHOUT LOGIN;
        GO
    

대상 인증서 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여넣습니다. 시스템의 폴더를 참조하도록 BACKUP CERTIFICATE 문에 지정된 파일 이름을 변경합니다. 그런 다음, 코드를 실행하여 메시지를 암호화하는 데 사용되는 대상 인증서를 만듭니다. 여기서 지정하는 폴더에는 Windows 계정이 아닌 계정과 데이터베이스 엔진 인스턴스가 실행 중인 Windows 계정에서 액세스하지 못하게 하는 권한이 설정되어 있어야 합니다. 단원 2의 경우 InstTargetCertificate.cer 파일을 시작자 인스턴스에서 액세스할 수 있는 폴더에 수동으로 복사해야 합니다.

        CREATE CERTIFICATE InstTargetCertificate
             AUTHORIZATION TargetUser
             WITH SUBJECT = 'Target Certificate',
                  EXPIRY_DATE = N'12/31/2010';
    
        BACKUP CERTIFICATE InstTargetCertificate
          TO FILE =
        N'C:\storedcerts\$ampleSSBCerts\InstTargetCertificate.cer';
        GO
    

메시지 유형 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여넣은 다음 실행하여 대화에 대한 메시지 유형을 만듭니다. 여기서 지정하는 메시지 유형 이름과 속성은 다음 단원의 InstInitiatorDB에서 만들 메시지 유형과 동일해야 합니다.

        CREATE MESSAGE TYPE [//BothDB/2InstSample/RequestMessage]
               VALIDATION = WELL_FORMED_XML;
        CREATE MESSAGE TYPE [//BothDB/2InstSample/ReplyMessage]
               VALIDATION = WELL_FORMED_XML;
        GO
    

계약 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여넣습니다. 그런 다음 코드를 실행하여 대화에 대한 계약을 만듭니다. 여기서 지정하는 계약 이름과 속성은 다음 단원의 InstInitiatorDB에서 만들 계약과 동일해야 합니다.

        CREATE CONTRACT [//BothDB/2InstSample/SimpleContract]
              ([//BothDB/2InstSample/RequestMessage]
                 SENT BY INITIATOR,
               [//BothDB/2InstSample/ReplyMessage]
                 SENT BY TARGET
              );
        GO
    

대상 큐 및 서비스 만들기

  • 다음 코드를 복사하여 쿼리 편집기 창에 붙여넣습니다. 그런 다음 코드를 실행하여 대상에 사용되는 큐 및 서비스를 만듭니다. CREATE SERVICE 문은 서비스로 전송되는 모든 메시지가 InstTargetQueue에 수신되도록 서비스를 InstTargetQueue에 연결합니다. 또한 CREATE SERVICE는 앞에서 만든 //BothDB/ 2InstSample/SimpleContract를 사용하는 대화만 이 서비스를 대상 서비스로 사용할 수 있도록 지정합니다.

        CREATE QUEUE InstTargetQueue;
    
        CREATE SERVICE [//TgtDB/2InstSample/TargetService]
               AUTHORIZATION TargetUser
               ON QUEUE InstTargetQueue
               ([//BothDB/2InstSample/SimpleContract]);
        GO
    

다음 단계

자습서에 사용할 데이터베이스를 성공적으로 만들었습니다. 이제 InstInitiatorDB를 만들고 시작자 쪽의 Service Broker 대화를 지원하는 데 필요한 개체로 구성합니다. 자세한 내용은 단원 2: 시작자 데이터베이스 만들기를 참조하세요.

참고 항목