BizTalk Serverを使用してSQL Serverでストアド プロシージャを実行する
Microsoft BizTalk Adapter for SQL Serverは、データベース内のプロシージャを操作としてSQL Server表示します。 アダプター クライアントは、BizTalk Serverで SQL アダプターを使用してプロシージャを呼び出すことができます。 アダプターがこれらの操作をサポートする方法の詳細については、「SQL アダプターを使用してSQL Serverストアド プロシージャを実行する」を参照してください。 これらの操作の SOAP メッセージの構造については、「 プロシージャと関数のメッセージ スキーマ」を参照してください。
SQL アダプターを使用すると、アダプター クライアントで次の呼び出しも可能になります。
SQL Server データベースのスカラー関数。 「BizTalk Serverを使用したSQL Serverでのスカラー関数の呼び出し」を参照してください。
データベース内のテーブル値関数SQL Server。 「BizTalk Serverを使用したSQL Serverでの Table-Valued 関数の呼び出し」を参照してください。
Note
ユーザー定義型の列を持つテーブルに対して操作を実行する場合は、アプリケーションの開発を開始する前 に、「SQL アダプターを使用して、User-Defined 型を持つテーブルとビュー に対する操作」を参照してください。
SQL Server データベースでプロシージャを呼び出す方法
BizTalk Serverで SQL アダプターを使用SQL Serverデータベースに対して操作を実行するには、SQL アダプターを使用して BizTalk アプリケーションを開発するための構成要素に関するページで説明されている手続き型タスクが含まれます。 SQL Server データベースでプロシージャを呼び出すには、次のタスクを実行します。
BizTalk プロジェクトを作成し、データベースで呼び出すプロシージャのスキーマSQL Server生成します。
データベースとの間でメッセージを送受信するためのメッセージを BizTalk プロジェクトSQL Server作成します。
データベースでプロシージャを呼び出すオーケストレーション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操作のメタデータの取得」を参照してください。
メッセージとメッセージの種類の定義
先に生成したスキーマは、オーケストレーションのメッセージに求められる "型" を記述します。 通常、メッセージは変数であり、対応するスキーマによって定義される型です。 オーケストレーションのメッセージを作成し、前の手順で生成したスキーマにリンクする必要があります。
メッセージを作成し、スキーマにリンクするには
BizTalk プロジェクトにオーケストレーションを追加します。 ソリューション エクスプローラーで、BizTalk プロジェクト名を右クリックし、[追加] をポイントして、[新しい項目] をクリックします。 BizTalk オーケストレーションの名前を入力し、[ 追加] をクリックします。
BizTalk プロジェクトの [オーケストレーションの種類] ウィンドウを開きます (まだ表示されていない場合)。 これを行うには、[ 表示] をクリックし、[ その他のウィンドウ] をポイントして、[ オーケストレーション ビュー] をクリックします。
[オーケストレーション ビュー] で、[ メッセージ] を右クリックし、[ 新しいメッセージ] をクリックします。
新しく作成したメッセージを右クリックし、[ プロパティ ウィンドウ] を選択します。
Message_1の [プロパティ] ウィンドウで、次の操作を行います。
プロパティ 目的 識別子 「 Request
」と入力しますメッセージ型 ドロップダウン リストから [ スキーマ] を展開し、[ExecProcedure.Procedure_dbo] を選択します 。ADD_EMP_DETAILS。ExecProcedure は BizTalk プロジェクトの名前です。 Procedure_dboは、ADD_EMP_DETAILS プロシージャを呼び出すためのスキーマです。 手順 2 を繰り返して、新しいメッセージを作成します。 新しいメッセージの [プロパティ ] ウィンドウで、次の操作を行います。
プロパティ 目的 識別子 「 Response
」と入力しますメッセージ型 ドロップダウン リストから [ スキーマ] を展開し、[ExecProcedure.Procedure_dbo] を選択します 。ADD_EMP_DETAILSResponse。
オーケストレーションの設定
SQL Serverで操作を実行するためにBizTalk Serverを使用するには、BizTalk オーケストレーションを作成する必要があります。 このオーケストレーションでは、定義された受信場所に要求メッセージをドロップします。 SQL アダプターはこのメッセージを使用し、SQL Serverに渡します。 SQL Serverからの応答は、別の場所に保存されます。 SQL Serverにメッセージを送信し、応答を受信するには、それぞれ [送受信] 図形を含める必要があります。 プロシージャを呼び出すためのサンプル オーケストレーションは、次のようになります。
プロシージャ を
メッセージ図形の追加
メッセージ図形ごとに次のプロパティを指定してください。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。
図形 | 図形の種類 | プロパティ |
---|---|---|
ReceiveMessage | 受信 | - 名前を ReceiveMessage に設定する - アクティブ化を True に設定する |
SendMessage | Send | - 名前を SendMessage に設定する |
ReceiveResponse | 受信 | - 名前を ReceiveResponse に設定する - アクティブ化を False に設定する |
SendResponse | Send | - 名前を SendResponse に設定する |
ポートの追加
論理ポートごとに次のプロパティを指定してください。 [ポート] 列に表示される名前は、オーケストレーションに表示されるポートの名前です。
Port | プロパティ |
---|---|
MessageIn | - 識別子を MessageIn に設定する - Type を MessageInType に設定する - 通信パターンを一方向に設定する - 通信方向を受信に設定する |
LOBPort | - 識別子を LOBPort に設定する - 型を LOBPortType に設定する - 通信パターンを Request-Response に設定する - [通信の方向] を [送受信] に設定する |
ResponseOut | - 識別子を ResponseOut に設定する - Type を ResponseOutType に設定する - 通信パターンを一方向に設定する - [通信の方向] を [送信] に設定する |
アクション 図形のメッセージを指定し、ポートに接続する
次の表では、アクション図形のメッセージを指定し、メッセージをポートにリンクするために設定するプロパティとその値を指定します。 [図形] 列に表示される名前は、前述のオーケストレーションに表示されるメッセージ図形の名前です。
図形 | プロパティ |
---|---|
ReceiveMessage | - メッセージを要求に設定する - 操作を MessageIn.Procedure.Request に設定する |
SendMessage | - メッセージを要求に設定する - 操作を LOBPort.Procedure.Request に設定する |
ReceiveResponse | - メッセージを応答に設定する - 操作を 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定義します。
データベースにメッセージを送信する物理 WCF-Custom または WCF-SQL 送信ポートSQL Server定義します。 また、送信ポートでアクションを指定する必要があります。 ポートを作成する方法については、「 SQL アダプターへの物理ポート バインドを手動で構成する」を参照してください。
Note
アダプター サービス BizTalk プロジェクト アドインを使用してスキーマを生成すると、ポートに関する情報と、それらのポートに設定するアクションを含むバインド ファイルも作成されます。 BizTalk Server管理コンソールからこのバインド ファイルをインポートして、送信ポート (送信呼び出しの場合) または受信ポート (受信呼び出し用) を作成できます。 詳細については、「 SQL アダプターを使用するようにポート バインド ファイルを使用して物理ポート バインドを構成する」を参照してください。
アプリケーションの起動
データベースでプロシージャを呼び出す場合は、BizTalk アプリケーションSQL Server起動する必要があります。 BizTalk アプリケーションを起動する手順については、「オーケストレーションを 開始する方法」を参照してください。
この段階で、次のことを確認します。
オーケストレーションの要求メッセージを受信する FILE 受信ポートが実行されています。
オーケストレーションからの応答メッセージを受信する FILE 送信ポートが実行されています。
データベースにメッセージを送信する WCF-Custom または WCF-SQL 送信ポートSQL Server実行されています。
操作の 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 ファイルに構成設定をエクスポートできます。 バインド ファイルを生成したら、ファイルから構成設定をインポートして、同じオーケストレーションの送信ポートや受信ポートなどの項目を作成する必要がないようにすることができます。 バインド ファイルの詳細については、「アダプター バインドの 再利用」を参照してください。