レッスン 1 : 対象データベースの作成
新規 : 2007 年 9 月 15 日
このレッスンでは、対象のデータベースの作成方法と、発信側データベースと依存関係を持たないすべての Service Broker 対象オブジェクトの作成方法を学習します。この手順は、対象となるデータベース エンジン インスタンスと同じコンピュータ上で実行されている Management Studio から実行してください。
手順
Service Broker エンドポイントの作成
クエリ エディタ ウィンドウに、次のコードをコピーして貼り付けます。次に、このコードを実行して、このデータベース エンジン インスタンスに対する Service Broker エンドポイントを作成します。Service Broker エンドポイントにより、Service Broker メッセージの送信先のネットワーク アドレスが設定されます。このエンドポイントでは既定で TCP ポート 4022 の Service Broker を使用し、リモートのデータベース エンジン インスタンスで 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 : 発信側データベースの作成」を参照してください。
参照
その他の技術情報
BACKUP CERTIFICATE (Transact-SQL)
CREATE CERTIFICATE (Transact-SQL)
CREATE CONTRACT (Transact-SQL)
CREATE DATABASE (Transact-SQL)
CREATE ENDPOINT (Transact-SQL)
CREATE MASTER KEY (Transact-SQL)
CREATE MESSAGE TYPE (Transact-SQL)
CREATE QUEUE (Transact-SQL)
CREATE SERVICE (Transact-SQL)
CREATE USER (Transact-SQL)
Service Broker ダイアログ セキュリティ
メッセージ交換のアーキテクチャ
サービスのアーキテクチャ