BizTalk Server で SQL アダプターを使用して、SQL Server でテーブル値関数を呼び出すことができます。 このアダプターは、テーブル値関数を SQL Server で直接呼び出すことができる操作として公開します。 アダプターがテーブル値関数をサポートする方法の詳細については、「 SQL アダプターを使用した SQL Server での Table-Valued 関数の実行」を参照してください。 テーブル値関数を呼び出すための SOAP メッセージの構造については、「 プロシージャと関数のメッセージ スキーマ」を参照してください。
[前提条件]
SQL アダプターと SQL Server を実行しているコンピューターで MSDTC を構成します。
SQL Server データベースでテーブル値関数を呼び出す
BizTalk Server で SQL アダプターを使用して SQL Server データベースに対する操作を実行するには、SQL アダプターを使用して BizTalk アプリケーションを開発するための構成要素で説明されている手続き型タスクが含まれます。 SQL Server でテーブル値関数を呼び出すには、次のタスクを実行します。
BizTalk プロジェクトを作成し、SQL Server で呼び出すテーブル値関数のスキーマを生成します。
SQL Server からメッセージを送受信するためのメッセージを BizTalk プロジェクトに作成します。
SQL Server で操作を呼び出すオーケストレーションを作成します。
BizTalk プロジェクトをビルドして展開します。
物理送受信ポートを作成して BizTalk アプリケーションを構成します。
BizTalk アプリケーションを起動します。
このトピックでは、これらのタスクを実行する手順について説明します。
スキーマの生成
このトピックでは、BizTalk Server で SQL アダプターを使用して SQL Server でテーブル値関数を呼び出す方法について説明します。 この操作を示すために、このトピックでは TVF_EMPLOYEE 関数を実行します。 この関数は、パラメーターとして従業員の指定を受け取り、その指定を持つすべての従業員レコードをテーブル型として返します。 Employee テーブルと関数は、サンプルで提供されるスクリプトを実行して作成されます。 スクリプトの詳細については、 SQL アダプターのサンプルを参照してください。
テーブル値関数を呼び出す方法を示すために、TVF_EMPLOYEEテーブル値関数のスキーマが生成されます。 BizTalk プロジェクトを作成し、Consume Adapter Service アドインを使用してスキーマを生成する必要があります。 スキーマの生成方法の詳細については、「 SQL アダプターを使用した Visual Studio での SQL Server 操作のメタデータの取得 」を参照してください。
メッセージとメッセージの種類を定義する
前に生成したスキーマでは、オーケストレーション内のメッセージに必要な "型" が記述されています。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 次に、オーケストレーションのメッセージを作成し、前の手順で生成したスキーマにリンクします。
BizTalk プロジェクトにオーケストレーションを追加します。 ソリューション エクスプローラーで、BizTalk プロジェクト名を右クリックし、[ 追加] をポイントして、[ 新しい項目] をクリックします。 BizTalk オーケストレーションの名前を入力し、[ 追加] をクリックします。
まだ開いていない場合は、BizTalk プロジェクトの [オーケストレーション ビュー] ウィンドウを開きます。 これを行うには、[ 表示] をクリックし、[ その他のウィンドウ] をポイントし、[ オーケストレーション ビュー] をクリックします。
オーケストレーション ビューで、[ メッセージ] を右クリックし、[ 新しいメッセージ] をクリックします。
新しく作成したメッセージを右クリックし、[ プロパティ ウィンドウ] を選択します。
Message_1の [プロパティ] ウィンドウで、次の操作を行います。
これを使用する 目的 識別子 「 Request
」と入力しますメッセージの種類 ドロップダウン リストから スキーマ を展開し、TableFunctions.TableValuedFunction_dbo.TVF_EMPLOYEE を選択します。ここで、TableFunctions はお使いの BizTalk プロジェクトの名前です。 TableValuedFunction_dboは、TVF_EMPLOYEE関数に対して生成されるスキーマです。 手順 2. を繰り返して、新しいメッセージを作成します。 新しいメッセージの [プロパティ ] ウィンドウで、次の操作を行います。
これを使用する 目的 識別子 「 Response
」と入力しますメッセージの種類 ドロップダウン リストから スキーマ を展開し、TableFunctions.TableValuedFunction_dbo.TVF_EMPLOYEEResponse を選択します。
オーケストレーションを設定する
SQL Server で操作を実行するために BizTalk Server を使用する BizTalk オーケストレーションを作成します。 このオーケストレーションでは、定義された受信場所に要求メッセージをドロップします。 SQL アダプターはこのメッセージを使用して SQL Server に渡します。 SQL Server からの応答は別の場所に保存されます。 SQL Server にメッセージを送信したり、応答を受信したりするには、送信図形と受信図形をそれぞれ含める必要があります。 テーブル値関数を呼び出すためのサンプル オーケストレーションは、次のようになります。
テーブル値関数 を
メッセージ図形を追加する
各メッセージ図形に対して、次のプロパティを入力します。 [図形] 列に一覧表示される名前は、先ほど説明したオーケストレーションに表示されるメッセージ図形の名前です。
形 | 図形の種類 | 特性 |
---|---|---|
メッセージ受信 | 受け取る | - 名前を ReceiveMessage に設定する - アクティブ化を True に設定する |
メッセージを送信 | 送信 | - 名前を SendMessage に設定する |
応答を受信する | 受け取る | - 名前を ReceiveResponse に設定する - アクティブ化を False に設定する |
SendResponse | 送信 | - 名前を SendResponse に設定する |
ポートの追加
論理ポートごとに次のプロパティを入力します。 [ポート] 列に表示される名前は、オーケストレーションに表示されるポートの名前です。
港 / ポート | 特性 |
---|---|
MessageIn | - 識別子を MessageIn に設定する - 型を MessageInType に設定する - 通信パターンを一方向に設定する - 通信方向を受信に設定する |
LOBPort | - 識別子を LOBPort に設定する - 型を LOBPortType に設定する - 通信パターンを Request-Response に設定する - 通信方向を送受信に設定する |
ResponseOut | - 識別子を ResponseOut に設定する - 型を ResponseOutType に設定する - 通信パターンを一方向に設定する - 通信方向を送信に設定する |
アクション 図形のメッセージを入力し、ポートに接続する
次の表では、アクション図形のメッセージを指定し、メッセージをポートにリンクするために設定するプロパティとその値を指定します。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。
形 | 特性 |
---|---|
メッセージ受信 | - メッセージを要求に設定する - 操作を MessageIn.TVF.Request に設定する |
メッセージを送信 | - メッセージを要求に設定する - 操作を LOBPort.TVF.Request に設定する |
応答を受信する | - メッセージを応答に設定する - 操作を LOBPort.TVF.Response に設定する |
SendResponse | - メッセージを応答に設定する - 操作を ResponseOut.TVF.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 受信場所に要求メッセージをドロップする必要があります。 要求メッセージのスキーマは、前に生成したTVF_EMPLOYEEテーブル値関数のスキーマに準拠している必要があります。 たとえば、TVF_EMPLOYEE関数を呼び出す要求メッセージは次のとおりです。
<TVF_EMPLOYEE xmlns="http://schemas.microsoft.com/Sql/2008/05/TableValuedFunctions/dbo">
<emp_desig>Tester</emp_desig>
</TVF_EMPLOYEE>
この要求メッセージは、TVF_EMPLOYEE関数を呼び出して、"Tester" という指定の従業員レコードを取得します。 SQL アダプターを使用して SQL Server でテーブル値関数を呼び出すための要求メッセージ スキーマの詳細については、「 プロシージャと関数 のメッセージ スキーマ」を参照してください。
注
パラメーターの値を指定しない場合、アダプターは DEFAULT キーワードを使用して関数を内部的に実行します。つまり、関数定義の一部として使用可能な場合、アダプターはパラメーターの既定値を渡すことによって関数を実行します。
オーケストレーションによってメッセージが処理され、SQL Server データベースに送信されます。 SQL Server データベースからの応答は、オーケストレーションの一部として定義されている他の FILE の場所に保存されます。 たとえば、上記の要求メッセージに対する SQL Server データベースからの応答は次のようになります。
<?xml version="1.0" encoding="utf-8" ?>
<TVF_EMPLOYEEResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableValuedFunctions/dbo">
<TVF_EMPLOYEEResult>
<TVF_EMPLOYEE xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/TableFunctionReturnTables/dbo">
<Employee_ID>10499</Employee_ID>
<Name>John</Name>
<Designation>Tester</Designation>
<Salary>999999.00</Salary>
<Last_Modified>AAAAAAAAJBM=</Last_Modified>
</TVF_EMPLOYEE>
<TVF_EMPLOYEE xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/TableFunctionReturnTables/dbo">
......
......
</TVF_EMPLOYEE>
......
......
</TVF_EMPLOYEEResult>
</TVF_EMPLOYEEResponse>
ベスト プラクティス
BizTalk プロジェクトを展開して構成したら、構成設定をバインド ファイルと呼ばれる XML ファイルにエクスポートできます。 バインド ファイルを生成したら、ファイルから構成設定をインポートできるため、同じオーケストレーションの送信ポートや受信ポートなどの項目を作成する必要はありません。 バインディング・ファイルの詳細については、 アダプター・バインディングの再利用を参照してください。