内部アクティブ化の実装

このチュートリアルは、Service Broker は初めて使用するが、データベースの概念と Transact-SQL ステートメントについては理解しているユーザーを対象としています。ここでは、初心者のユーザーを対象に、Service Broker メッセージを処理するための内部アクティブ化ストアド プロシージャを実装する方法を紹介します。

学習する内容

このチュートリアルでは、内部アクティブ化ストアド プロシージャを使用して、簡単な要求/応答の Service Broker メッセージ交換をサポートするために必要なデータベース オブジェクトを作成する方法について学習します。次に、メッセージ交換を開始し、それを使用してメッセージを送信します。

各 Service Broker メッセージ交換には、発信側と発信先があります。要求/応答のメッセージ交換では、発信側から要求メッセージが送信され、発信先は応答メッセージを返します。Service Broker の内部アクティブ化を使用すると、処理するメッセージが存在するときにストアド プロシージャを実行できます。Service Broker は、多数のメッセージが転送される場合は、ストアド プロシージャの複数のコピーを実行できます。このチュートリアルでは、発信先で要求メッセージを受信するストアド プロシージャを作成する方法と、内部アクティブ化を使用してストアド プロシージャを実行するように発信先を構成する方法を示します。

実行する作業は次のとおりです。

  • 発信先のサービスとキュー、および発信側のサービスとキューを作成する。

  • 要求メッセージ型と応答メッセージ型を作成する。

  • 発信側から発信先に送信される要求メッセージと、発信先から発信側に送信される応答メッセージを指定するコントラクトを作成する。

  • 発信先キューからの要求メッセージを受信し、発信側に応答メッセージを送信するストアド プロシージャを作成する。

  • 発信先キューを変更してストアド プロシージャの内部アクティブ化を有効にする。

次に、簡単なメッセージ交換を実行します。

  • メッセージ交換を開始する。

  • 発信側から発信先に要求を送信する。

  • Service Broker によってストアド プロシージャがアクティブ化され、ストアド プロシージャが発信先で要求を受信し、応答を発信側に送信する。

  • 発信側で応答を受信する。

  • 発信側でのメッセージ交換を終了する。

  • Service Broker によってストアド プロシージャが再度アクティブ化され、ストアド プロシージャが発信先のメッセージ交換を終了する。

発信側と発信先がデータベース エンジンの同じインスタンスに存在するメッセージ交換では、メッセージはネットワークを介して転送されません。データベース エンジンのセキュリティおよび権限により、許可されたプリンシパルへのアクセスが制限されます。このシナリオでは、ネットワーク暗号化は必要ありません。

このチュートリアルは、次の 3 つのレッスンで構成されています。

必要条件

このチュートリアルを完了するには、Transact-SQL 言語と、SQL Server Management Studio のデータベース エンジン クエリ エディタの使用方法についての知識が必要です。また、AdventureWorks サンプル データベースの db_ddladmin 固定データベース ロール、db_owner 固定データベース ロール、または sysadmin 固定サーバー ロールのメンバである必要があります。

システムには次のコンポーネントがインストールされている必要があります。