次の方法で共有


BIZTALK SERVERを使用して SQL から FOR XML 句で SELECT ステートメントを使用してポーリング メッセージを受信する

SQL アダプターは、FOR XML 句を含む SELECT ステートメントまたはストアド プロシージャを使用して、SQL Serverテーブルまたはビューの定期的なデータ変更メッセージを受信するように構成できます。 これらのステートメントは、アダプターがデータベースをポーリングするために実行するポーリング ステートメントとして指定できます。 ポーリング ステートメントには、SELECT ステートメント、または結果セットを返すストアド プロシージャを指定できます。

アダプターがポーリングをサポートする方法の詳細については、「ポーリングの サポート」を参照してください。 ポーリング操作用の SOAP メッセージの構造については、「 ポーリング操作と TypedPolling 操作のメッセージ スキーマ」を参照してください。 SQL FOR XML 句 では、詳細が提供されます。

Note

このトピックでは、 XmlPolling 受信操作を使用してポーリング メッセージを受信する方法について説明します。 XmlPolling 操作は、SELECT ステートメントまたは FOR XML 句を含むストアド プロシージャを使用して、SQL Server データベースをポーリングするために使用されます。 XmlPolling 操作のメッセージには、select ステートメントまたはストアド プロシージャを実行して受信した xml メッセージがSQL Server Management Studio。

アダプターを使用して、さまざまな種類のポーリング メッセージを受信することもできます。

重要

1 つの BizTalk アプリケーションで複数のポーリング操作を行う場合は、接続 URI の一部として InboundID 接続プロパティを指定して一意にする必要があります。 一意の接続 URI を使用すると、同じデータベース、またはデータベース内の同じテーブルをポーリングする複数の受信ポートを作成できます。 詳細については、「BizTalk Serverを使用して SQL から複数の受信ポート間でポーリング メッセージを受信する」を参照してください。

このトピックでポーリングを示す方法

このトピックでは、SQL アダプターがデータ変更メッセージの受信をサポートする方法を示すために、FOR XML 句と共に SELECT ステートメントを使用して、SQL Server データベースをポーリングします。 SQL Server Management Studioでこのようなステートメントを呼び出すと、出力は xml メッセージの形式になります。 このようなステートメントを使用してSQL Server データベースをポーリングするには、応答 xml メッセージのスキーマが必要です。 SQL アダプターでは、FOR XML 句を使用して SELECT ステートメントを実行した後、このスキーマでポーリング メッセージを受信する必要があります。 そのため、SELECT ステートメントと FOR XML 句を使用してSQL Server データベースをポーリングするには、次の一連のタスクを実行する必要があります。

  1. FOR XML 句を使用して SELECT ステートメントの XML 応答メッセージのスキーマを生成します。

  2. BizTalk プロジェクトを作成し、生成されたスキーマをプロジェクトに追加します。

  3. SQL Server データベースから XML 応答メッセージを受信するためのメッセージを BizTalk プロジェクトに作成します。

  4. SQL Server データベースからメッセージを受信し、フォルダーに保存するオーケストレーションを作成します。

  5. BizTalk プロジェクトをビルドして展開します。

  6. 物理送受信ポートを作成して BizTalk アプリケーションを構成します。

    重要

    受信ポーリングのシナリオでは、常に一方向の WCF-Custom または WCF-SQL 受信ポートを構成する必要があります。 双方向 WCF-Custom または WCF-SQL 受信ポートは、受信操作ではサポートされていません。

  7. BizTalk アプリケーションを起動します。

SELECT ステートメントの応答メッセージのスキーマの生成

句を 句と共に含めることで、SELECT ステートメントの応答メッセージの xmlschema スキーマを for xml 生成できます。 このトピックでは、SELECT ステートメントを使用して、特定の従業員 ID の従業員の詳細を取得します。 SELECT ステートメントを実行してスキーマを取得するには、SELECT ステートメントを次のように記述する必要があります。

SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto, xmlschema

この SELECT ステートメントを実行して、応答メッセージのスキーマを取得します。 スキーマを保存します。 次に、Visual Studio で BizTalk プロジェクトを作成し、このスキーマをプロジェクトに追加する必要があります。 この例では、このスキーマに PollingResponse.xsd という名前を付けることができます。

重要

SELECT ステートメントを実行してスキーマを xmlschema 生成した後で、 句を削除してください。 これを行わない場合、XmlPolling 操作の一部として BizTalk を介して SELECT ステートメントを最後に実行すると、応答メッセージでスキーマが再度生成されます。 そのため、応答メッセージを xml として取得するには、 句を削除する xmlschema 必要があります。

BizTalk プロジェクトにスキーマを追加するには

  1. Visual Studio で BizTalk プロジェクトを作成します。

  2. ストアド プロシージャ用に生成した応答スキーマを BizTalk プロジェクトに追加します。 ソリューション エクスプローラーで BizTalk プロジェクトを右クリックし、[追加] をポイントして、[既存の項目] をクリックします。 [既存の項目の追加] ダイアログ ボックスで、スキーマを保存した場所に移動し、[ 追加] をクリックします。

  3. Visual Studio でスキーマを開き、次の変更を行います。

    1. スキーマにノードを追加し、この新しく追加されたノードの下に既存のルート ノードを移動します。 ルート ノードに名前を付けます。 このトピックでは、ルート ノードの名前を Root に変更します。

    2. SELECT ステートメント用に生成された応答スキーマは、sqltypes.xsd を参照します。 sqltypes.xsd スキーマは から https://go.microsoft.com/fwlink/?linkid=31850取得できます。 sqltypes.xsd スキーマを BizTalk プロジェクトに追加します。 このスキーマの詳細については、次のページを参照してください。

    3. SELECT ステートメント用に生成されたスキーマで、 の import schemaLocation 値を次のように変更します。

      import schemaLocation=”sqltypes.xsd”
      

      これは、既に sqltypes.xsd スキーマを BizTalk プロジェクトに追加しているためです。

    4. スキーマのターゲット名前空間を指定します。 [スキーマ>] ノードを<クリックし、プロパティ ペインで [ターゲット名前空間] プロパティに名前空間を指定します。 このトピックでは、 名前空間を として http://ForXmlPolling/namespace指定します。

メッセージとメッセージの種類の定義

前に生成したスキーマでは、オーケストレーション内のメッセージに必要な "型" について説明します。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 スキーマが生成されたら、BizTalk プロジェクトのオーケストレーション ビューからメッセージにリンクする必要があります。

このトピックでは、SQL Server データベースからメッセージを受信するメッセージを 1 つ作成する必要があります。

メッセージを作成し、スキーマにリンクするには、次の手順を実行します。

  1. BizTalk プロジェクトにオーケストレーションを追加します。 ソリューション エクスプローラーから BizTalk プロジェクト名を右クリックし、[追加] をポイントして、[新しい項目] をクリックします。 BizTalk オーケストレーションの名前を入力し、[ 追加] をクリックします。

  2. BizTalk プロジェクトがまだ開いていない場合は、オーケストレーション ビュー ウィンドウを開きます。 [ 表示] をクリックし、[ その他のウィンドウ] をポイントして、[ オーケストレーション ビュー] をクリックします。

  3. オーケストレーション ビューで、[メッセージ] を右クリックし、[新しいメッセージ] をクリックします。

  4. 新しく作成したメッセージを右クリックし、[ プロパティ ウィンドウ] を選択します。

  5. Message_1[プロパティ] ウィンドウで、次の操作を行います。

    プロパティ 目的
    識別子 PollingMessage」と入力します。
    メッセージ型 ドロップダウン リストから [ スキーマ] を展開し、[ ForXMLPolling.PollingResponse] ( ForXMLPolling は BizTalk プロジェクトの名前) を選択します。 PollingResponse は、「BIZTALK SERVERを使用して SQL から FOR XML 句を使用して SELECT ステートメントを使用してポーリング メッセージを受信する」で説明されているように、SELECT ステートメントを実行して生成される応答スキーマの名前です。

オーケストレーションの設定

SQL Server データベースからポーリング ベースのデータ変更メッセージを受信するためにBizTalk Serverを使用するには、BizTalk オーケストレーションを作成する必要があります。 このオーケストレーションでは、アダプターは PollingStatement バインディング プロパティに指定された select ステートメントの応答を受け取ります。 SELECT ステートメントの応答は FILE の場所に保存されます。 SQL Server データベースをポーリングするための一般的なオーケストレーションには、次のものが含まれます。

  • SQL Serverからメッセージを受信し、それぞれ FILE ポートに送信する図形を受信および送信します。

  • SQL Serverからメッセージを受信する一方向の受信ポート。

    重要

    受信ポーリングシナリオでは、常に一方向の受信ポートを構成する必要があります。 双方向の受信ポートは、受信操作ではサポートされていません。

  • SQL Server データベースからフォルダーにポーリング応答を送信する一方向送信ポート。

    サンプル オーケストレーションは次のようになります。

    5cf65d53-d70d-444d-82f7-2561efcd9ee4SQL Server データベース を

メッセージ図形の追加

メッセージ図形ごとに次のプロパティを指定してください。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。

図形 図形の種類 プロパティ
ReceiveMessage 受信 - 名前を ReceiveMessage に設定する

- アクティブ化True に設定する
SaveMessage Send - 名前SaveMessage に設定する

ポートの追加

論理ポートごとに次のプロパティを指定してください。 [ポート] 列に表示される名前は、オーケストレーションに表示されるポートの名前です。

Port プロパティ
SQLReceivePort - 識別子SQLReceivePort に設定する

- SQLReceivePortType に設定する

- 通信パターン一方向に設定する

- 通信方向受信に設定する
SaveMessagePort - 識別子SaveMessagePort に設定する

- TypeSaveMessagePortType に設定する

- 通信パターン一方向に設定する

- [通信の方向] を [送信] に設定する

アクション 図形のメッセージを指定し、ポートに接続する

次の表では、アクション図形のメッセージを指定し、メッセージをポートにリンクするために設定するプロパティとその値を指定します。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。

図形 プロパティ
ReceiveMessage - メッセージ受信に設定する

- 操作SQLReceivePort.XmlPolling.Request に設定する
SaveMessage - メッセージ受信に設定する

- 操作SaveMessagePort.XmlPolling.Request に設定する

これらのプロパティを指定すると、メッセージの図形とポートが接続され、オーケストレーションが完了します。

BizTalk ソリューションをビルドし、BizTalk Serverに展開する必要があります。 詳細については、「オーケストレーションの ビルドと実行」を参照してください。

BizTalk アプリケーションの構成

BizTalk プロジェクトを展開すると、先ほど作成したオーケストレーションが、BizTalk Server管理コンソールの [オーケストレーション] ウィンドウの下に一覧表示されます。 アプリケーションを構成するには、BizTalk Server管理コンソールを使用する必要があります。 チュートリアルについては、「 チュートリアル: 基本的な BizTalk アプリケーションの展開」を参照してください。

アプリケーションの構成には、次の作業が含まれます。

  • アプリケーションのホストの選択。

  • オーケストレーションで作成したポートを、BizTalk Server管理コンソールの物理ポートにマッピングします。 このオーケストレーションでは、次の操作を行う必要があります。

    • ハード ディスク上の場所と、BizTalk オーケストレーションがSQL Server データベースからメッセージを削除する対応するファイル ポートを定義します。 これらのメッセージは、受信ポートに指定したポーリング ステートメントに応答します。

    • 物理 WCF-Custom または WCF-SQL 一方向の受信ポートを定義します。 このポートは、ポートに指定したポーリング ステートメントを使用して、SQL Server データベースをポーリングします。 ポートを作成する方法については、「 SQL アダプターへの物理ポート バインドを手動で構成する」を参照してください。 受信ポートには、次のバインド プロパティを指定してください。

      重要

      デザイン時にバインド プロパティを指定した場合は、この手順を実行する必要はありません。 このような場合は、アダプター サービス アドインを使用して作成されたバインド ファイルをインポートすることで、必要なバインド プロパティを設定して、WCF-custom または WCF-SQL 受信ポートを作成できます。 詳細については、「 SQL アダプターを使用するようにポート バインド ファイルを使用して物理ポート バインドを構成する」を参照してください

      Binding プロパティ
      InboundOperationType これを XmlPolling に設定してください。
      PolledDataAvailableStatement SQL ステートメントを指定してください。 このトピックでは、次を指定します。

      SELECT COUNT(*) FROM Employee
      PollingStatement 「BIZTALK SERVERを使用して SQL から FOR XML 句を使用して SELECT ステートメントを使用してポーリング メッセージを受信する」の説明に従って、スキーマの生成中に指定したのと同じステートメントを 句なしでxmlschema指定してください。

      SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto

      メモ: SELECT ステートメントには 句が含 xmlschema まれていないことに注意してください。
      XmlStoredProcedureRootNodeName SELECT ステートメントの応答メッセージのスキーマの生成に関するページで説明されているように、SELECT ステートメント用に生成した応答スキーマに追加したルート ノード の名前を指定します。 このトピックでは、これを [ルート] に設定します。
      XmlStoredProcedureRootNodeNamespace SELECT ステートメントの応答メッセージのスキーマの生成に関するページで説明されているように、SELECT ステートメント用に 生成した応答スキーマのターゲット名前空間を指定します。 このトピックでは、これを に設定します http://ForXmlPolling/namespace

      さまざまなバインド プロパティの詳細については、「BizTalk Adapter for SQL Server adapter Binding Properties」を参照してください。

      Note

      SQL アダプターを使用して受信操作を実行するときに、トランザクション分離レベルとトランザクション タイムアウトを構成することをお勧めします。 これを行うには、WCF-Custom または WCF-SQL 受信ポートの構成中にサービスの動作を追加します。 サービスの動作を追加する方法については、「SQL を使用して トランザクション分離レベルとトランザクション タイムアウトを構成する」を参照してください。

アプリケーションの起動

SQL Server データベースからメッセージを受信するには、BizTalk アプリケーションを起動する必要があります。 BizTalk アプリケーションを起動する手順については、「オーケストレーションを 開始する方法」を参照してください。

この段階で、次のことを確認します。

  • WCF-Custom または WCF-SQL の一方向の受信ポートは、PollingStatement バインディング プロパティに指定されたステートメントを使用してSQL Server データベースをポーリングします。

  • SQL Serverからメッセージを受信する FILE 送信ポートが実行されています。

  • 操作の BizTalk オーケストレーションが実行されています。

操作の実行

アプリケーションを実行すると、次の一連のアクションが同じ順序で実行されます。

  • アダプターは、Employee テーブルで PolledDataAvailableStatement を実行し、テーブルにポーリング用のレコードがあることを判断します。

  • アダプターはポーリング ステートメントを実行し、SQL Server データベースからポーリング メッセージを受信します。 ポーリング ステートメントは FOR XML 句を含む SELECT ステートメントで構成されるため、アダプターによって受信されるポーリング メッセージは次のようになります。

    <?xml version="1.0" encoding="utf-8" ?>
    <Root xmlns="http://ForXmlPolling/namespace">
      <Employee Employee_ID="10765" Name="John" Designation="Tester" xmlns="" />
      <Employee Employee_ID="10766" Name="Sam" Designation="Manager" xmlns="" />
      .....
      .....
    </Root>
    

    ポーリング メッセージは、 xmlschema 句を使用して SELECT ステートメントを実行して生成されたのと同じスキーマで受信されます。 また、ルート ノードと名前空間は、 それぞれ XmlStoredProcedureRootNodeName および XmlStoredProcedureRootNodeNamespace バインド プロパティの値として指定したのと同じであることに注意してください。

Note

SQL アダプターは、BizTalk Server管理コンソールから受信ポートを明示的に無効にするまでポーリングを続行します。

ベスト プラクティス

BizTalk プロジェクトを展開して構成したら、バインド ファイルと呼ばれる XML ファイルに構成設定をエクスポートできます。 バインド ファイルを生成したら、同じオーケストレーションの送信ポートと受信ポートを作成する必要がないように、ファイルから構成設定をインポートできます。 バインド ファイルの詳細については、「アダプター バインドの 再利用」を参照してください。

参照

BizTalk Serverで SQL アダプターを使用してSQL Serverをポーリングする