次の方法で共有


レッスン 1 : 発信先データベースの作成

このレッスンでは、発信先データベースと、発信側データベースに依存しないすべての 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 オプションが ON に設定されます。このコードは、暗号化およびリモート接続をサポートするために使用されるマスタ キーとユーザーも作成します。

    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 : 発信側データベースの作成」を参照してください。