次の方法で共有


BizTalk Server を使用して SQL Server でストアド プロシージャを実行する

Microsoft BizTalk Adapter for SQL Server は、SQL Server データベースのプロシージャを操作として表示します。 アダプター クライアントは、BizTalk Server で SQL アダプターを使用してプロシージャを呼び出すことができます。 アダプターがこれらの操作をサポートする方法の詳細については、「 SQL アダプターを使用した SQL Server でのストアド プロシージャの実行」を参照してください。 これらの操作の SOAP メッセージの構造については、「 プロシージャと関数のメッセージ スキーマ」を参照してください。

SQL アダプターを使用すると、アダプター クライアントで次の呼び出しも可能になります。

アプリケーションの開発を開始する前に、ユーザー定義型の列を持つテーブルに対して操作を実行する場合は、SQL アダプターを使用した User-Defined 型を持つテーブルおよびビューに対する操作を参照することを確認してください。

SQL Server データベースでプロシージャを呼び出す方法

BizTalk Server で SQL アダプターを使用して SQL Server データベースに対する操作を実行するには、「構成要素」で説明されている手順に従って 、SQL アダプターを使用して BizTalk アプリケーションを開発します。 SQL Server データベースでプロシージャを呼び出すには、次のタスクを実行します。

  • BizTalk プロジェクトを作成し、SQL Server データベースで呼び出すプロシージャのスキーマを生成します。

  • SQL Server データベースとの間でメッセージを送受信するためのメッセージを BizTalk プロジェクトに作成します。

  • SQL Server データベースでプロシージャを呼び出すオーケストレーションを作成します。

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

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

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

    このトピックでは、これらのタスクを実行する手順について説明します。

このトピックに基づくサンプル

このトピックに基づくサンプル ExecuteStoredProcedure は、BizTalk アダプター パックで提供されています。 詳細については、 SQL アダプターのサンプルを参照してください

スキーマの生成

このトピックでは、ADD_EMP_DETAILS プロシージャを呼び出すことで、プロシージャの呼び出し方法を示します。 この手順は、サンプルで提供されるスクリプトを実行することによって作成されます。 ADD_EMP_DETAILSプロシージャは、特定のパラメーターを受け取り、EMPLOYEE テーブルにレコードを挿入し、挿入されたレコードの従業員 ID を返します。 サンプルと SQL スクリプトの詳細については、「 スキーマ サンプル」を参照してください。

ADD_EMP_DETAILS プロシージャを呼び出すには、同じプロシージャのスキーマを生成する必要があります。 スキーマの生成方法の詳細については、「 SQL アダプターを使用した Visual Studio での SQL Server 操作のメタデータの取得 」を参照してください。

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

前に生成したスキーマでは、オーケストレーション内のメッセージに必要な "型" が記述されています。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 オーケストレーションのメッセージを作成し、前の手順で生成したスキーマにリンクする必要があります。

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

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

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

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

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

    これを使用する 目的
    識別子 Request」と入力します
    メッセージの種類 ドロップダウン リストから スキーマ を展開し、ExecProcedure.Procedure_dbo.ADD_EMP_DETAILS を選択します。ここで、ExecProcedure は BizTalk プロジェクトの名前です。 Procedure_dboは、ADD_EMP_DETAILS プロシージャを呼び出すためのスキーマです。
  6. 手順 2. を繰り返して、新しいメッセージを作成します。 新しいメッセージの [プロパティ ] ウィンドウで、次の操作を行います。

    これを使用する 目的
    識別子 Response」と入力します
    メッセージの種類 ドロップダウン リストから スキーマ を展開し、ExecProcedure.Procedure_dbo.ADD_EMP_DETAILSResponse を選択します。

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

SQL Server で操作を実行するために BizTalk Server を使用するには、BizTalk オーケストレーションを作成する必要があります。 このオーケストレーションでは、定義された受信場所に要求メッセージをドロップします。 SQL アダプターはこのメッセージを使用して SQL Server に渡します。 SQL Server からの応答は別の場所に保存されます。 SQL Server にメッセージを送信し、応答を受信するには、送信図形と受信図形をそれぞれ含める必要があります。 プロシージャを呼び出すためのサンプル オーケストレーションは、次のようになります。

698730c1-6aa9-49f3-97b3-adb5e6537300プロシージャ を

メッセージ図形の追加

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

図形の種類 特性
メッセージ受信 受け取る - 名前ReceiveMessage に設定する
- アクティブ化True に設定する
メッセージを送信 送信 - 名前SendMessage に設定する
応答を受信する 受け取る - 名前ReceiveResponse に設定する
- アクティブ化False に設定する
SendResponse 送信 - 名前SendResponse に設定する

ポートの追加

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

港 / ポート 特性
MessageIn - 識別子MessageIn に設定する
- MessageInType に設定する
- 通信パターン一方向に設定する
- 通信方向受信に設定する
LOBPort - 識別子LOBPort に設定する
- LOBPortType に設定する
- 通信パターンRequest-Response に設定する
- 通信方向送受信に設定する
ResponseOut - 識別子ResponseOut に設定する
- ResponseOutType に設定する
- 通信パターン一方向に設定する
- 通信方向送信に設定する

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

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

特性
メッセージ受信 - メッセージ要求に設定する
- 操作MessageIn.Procedure.Request に設定する
メッセージを送信 - メッセージ要求に設定する
- 操作LOBPort.Procedure.Request に設定する
応答を受信する - メッセージ応答に設定する
- 操作LOBPort.Procedure.Response に設定する
SendResponse - メッセージ応答に設定する
- 操作ResponseOut.Procedure.Request に設定する

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

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

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

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

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

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

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

    • ハード ディスク上の場所と、要求メッセージをドロップする対応するファイル ポートを定義します。 BizTalk オーケストレーションは、要求メッセージを使用して SQL Server データベースに送信します。

    • ハード ディスク上の場所と、BizTalk オーケストレーションが SQL Server データベースからの応答を含む応答メッセージを削除する対応するファイル ポートを定義します。

    • SQL Server データベースにメッセージを送信する物理 WCF-Custom または送信ポート WCF-SQL 定義します。 また、送信ポートでアクションを指定する必要があります。 ポートを作成する方法については、「 SQL アダプターへの物理ポート バインドを手動で構成する」を参照してください

      また、Consume Adapter Service BizTalk Project アドインを使用してスキーマを生成すると、それらのポートに設定するポートとアクションに関する情報を含むバインディング ファイルも作成されます。 BizTalk Server 管理コンソールからこのバインド ファイルをインポートして、送信ポート (発信呼び出し用) または受信ポート (受信呼び出し用) を作成できます。 詳細については、「 SQL アダプターを使用するようにポート バインド ファイルを使用して物理ポート バインドを構成する」を参照してください

アプリケーションの起動

SQL Server データベースでプロシージャを呼び出すには、BizTalk アプリケーションを起動する必要があります。 BizTalk アプリケーションを起動する手順については、「オーケストレーションを 開始する方法」を参照してください。

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

  • オーケストレーションの要求メッセージを受信する FILE 受信ポートが実行されています。

  • オーケストレーションからの応答メッセージを受信する FILE 送信ポートが実行中です。

  • SQL Server データベースにメッセージを送信する WCF-Custom または WCF-SQL 送信ポートが実行されています。

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

操作の実行

アプリケーションを実行した後、FILE 受信場所に要求メッセージをドロップする必要があります。 要求メッセージのスキーマは、前に生成したプロシージャのスキーマに準拠している必要があります。 たとえば、GET_EMP_DETAILSを呼び出す要求メッセージは次のとおりです。

<ADD_EMP_DETAILS xmlns="mssql://Microsoft.LobServices.Sql/2008/01/Procedures/dbo">  
  <emp_name>John</emp_name>  
  <emp_desig>Developer</emp_desig>  
  <salary>100000</salary>  
</ADD_EMP_DETAILS>  

SQL アダプターを使用して SQL Server データベースでプロシージャを呼び出すための要求メッセージ スキーマの詳細については、「 プロシージャと関数 のメッセージ スキーマ」を参照してください。

オーケストレーションはメッセージを処理し、SQL Server データベースに送信します。 SQL Server データベースからの応答は、オーケストレーションの一部として定義されている他の FILE の場所に保存されます。 たとえば、上記の要求メッセージに対する SQL Server データベースからの応答は次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>   
<ADD_EMP_DETAILSResponse xmlns="mssql://Microsoft.LobServices.Sql/2008/01/Procedures/dbo">  
  <ADD_EMP_DETAILSResult>  
    <DataSet xmlns="http://schemas.datacontract.org/2004/07/System.Data">  
      <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
        <xs:element msdata:IsDataSet="true" name="NewDataSet">  
          <xs:complexType>  
            <xs:sequence>  
              <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">  
                <xs:complexType>  
                  <xs:sequence>  
                    <xs:element minOccurs="0" name="Employee_ID" type="xs:int" />   
                  </xs:sequence>  
                </xs:complexType>  
              </xs:element>  
            </xs:sequence>  
          </xs:complexType>  
        </xs:element>  
      </xs:schema>  
      <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">  
        <NewDataSet xmlns="">  
          <NewTable>  
            <Employee_ID>10001</Employee_ID>   
          </NewTable>  
        </NewDataSet>  
      </diffgr:diffgram>  
    </DataSet>  
  </ADD_EMP_DETAILSResult>  
  <ReturnValue>0</ReturnValue>   
</ADD_EMP_DETAILSResponse>  

上記の応答では、 <Employee_ID> 要素には、挿入されたレコードの従業員 ID が含まれています。

ベスト プラクティス

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

こちらもご覧ください

SQL アダプターを使用して BizTalk アプリケーションを開発する