次の方法で共有


BizTalk Server を使用して SQL Server で単一の XML パラメーターを使用してストアド プロシージャを実行する

1 つのパラメーターを受け取るストアド プロシージャの実行は、「 BizTalk Server を使用した SQL Server でのストアド プロシージャの実行」の説明に従って、他のストアド プロシージャを実行するのと似ています。 ただし、前のリンクで説明した方法では、デザイン時にストアド プロシージャのメタデータを生成し、実行時にプロシージャを呼び出すオーケストレーションを作成する必要があります。

1 つの値をストアド プロシージャに渡すだけで、その値に対する処理を行わないシナリオを考えてみましょう。 このような場合は、メタデータの生成、オーケストレーションの作成、オーケストレーションの展開、操作の実行などのオーバーヘッドは必要ありません。 代わりに、ストアド プロシージャを直接呼び出すように、WCF-Custom または WCF-SQL 送信ポートを構成できます。 このトピックでは、BizTalk Server 管理コンソールを使用してこれらのタスクを実行する方法について説明します。

このトピックでは、1 つのパラメーターを受け取るストアド プロシージャを実行するための WCF-Custom 送信ポートを構成する方法について説明します。 WCF-SQL ポートを構成することで、同じ手順を実行できます。 ポート WCF-SQL 構成する手順については、「 WCF-SQL アダプターを使用してポートを構成する」を参照してください。

オーケストレーションなしでストアド プロシージャを呼び出す

オーケストレーションを使用せずに単一パラメーターでストアド プロシージャを実行する方法を示すために、このトピックではADD_LAST_EMP_XML_INFOストアド プロシージャを使用します。 このプロシージャは、XML 値をパラメーターとして受け取り、Employee テーブルの Address 列に挿入します。 ストアド プロシージャに渡す XML 値が必要です。 ただし、アダプターを使用してストアド プロシージャを実行するには、プロシージャのスキーマに準拠し、 Address フィールドの XML 値を含む要求メッセージを SQL Server に送信する必要があります。 そのため、次の方法で要求メッセージを作成する必要があります。

  • メッセージ テンプレートを使用して要求メッセージを作成できる送信ポート構成の [ テンプレート ] オプションを使用します。

  • Address フィールドの XML 値をメッセージに格納します。

    これらすべての手順については、このトピックで詳しく説明します。 次の一連のタスクを実行する必要があります。

  1. Employee テーブルの [アドレス XML] フィールドに挿入される XML ファイルをドロップする FILE 受信ポートを作成します。 このポートが MessageIn ポートと呼ばれるとします。

  2. FILE 受信ポートから XML ファイルを選択し、メッセージ テンプレートを使用してメッセージを構築し、SQL Server に送信してストアド プロシージャを実行する一方向送信ポートを WCF-Custom 作成します。

    このトピックのこの部分では、メッセージ テンプレートを使用して WCF-Custom 送信ポートを構成する手順について説明します。

このトピックの情報では、単一の XML パラメーターを使用してストアド プロシージャを実行する方法を示していますが、タスクを実行して、任意のデータ型の 1 つのパラメーターを受け取る任意の操作を実行できます。 唯一の違いは、特定の操作のメッセージ テンプレートを作成する方法です。 メッセージ テンプレートを作成するには、オーケストレーションを使用して操作を実行するために使用する要求メッセージを取得し、パラメーターの値を BizTalk メッセージ本文に置き換えます。

WCF-Custom 送信ポートを構成する

WCF-Custom 送信ポートを作成する前に、FILE 受信ポート MessageIn を作成していることを確認します。

  1. BizTalk Server 管理コンソールを起動します。

  2. コンソール ツリーで、[ BizTalk グループ] を展開し、[アプリケーション] を展開 します

  3. SQL アダプターをデプロイするアプリケーションを展開します。

  4. [ 送信ポート] を右クリックし、[ 新規] をポイントし、[ 静的一方向送信ポート] をポイントします。

  5. [ 送信ポートのプロパティ ] ダイアログ ボックスの [ 全般 ] タブで、送信ポートの名前を入力します。

  6. FILE 受信ポート MessageIn で破棄されたすべてのメッセージを受信するようにポートを構成します。

    1. [ 送信ポートのプロパティ ] ダイアログ ボックスの左側のウィンドウで、[ フィルター] をクリックします。

    2. 右側のウィンドウの [プロパティ] 列でグリッドをクリックし、BTS.ReceivePortName プロパティを選択します。

    3. [演算子] 列で、[==] を選択します。

    4. [値] 列に、FILE 受信ポートの名前を指定MessageIn

  7. [ 送信ポートのプロパティ ] ダイアログ ボックスの [ 全般 ] タブの [ 種類 ] ドロップダウン リストから [ WCF-Custom] を選択し、[ 構成] をクリックします。

  8. [ トランスポートのプロパティのWCF-Custom ] ダイアログ ボックスで、次の操作を行います。

    1. [ 全般 ] タブをクリックし、[ アドレス (URI)] フィールドに SQL Server の接続 URI を指定します。 接続 URI の詳細については、「 SQL Server 接続 URI の作成」を参照してください。

    2. [ 全般 ] タブの [ アクション ] テキスト ボックスに、操作のアクションを入力します。 各操作のアクションの一覧については、「 メッセージとメッセージ スキーマ 」を参照してください。 たとえば、ADD_LAST_EMP_XML_INFOを呼び出すアクションは次のとおりです。

      Procedure/dbo/ADD_LAST_EMP_XML_INFO  
      
    3. [ バインド ] タブをクリックし、[ バインドの種類 ] ボックスの一覧から [sqlBinding] を選択します。 SQL アダプターによって公開されるさまざまなバインディング プロパティを指定できます。 バインド プロパティの詳細については、「 BizTalk Adapter for SQL Server アダプターのバインド プロパティ」を参照してください。

    4. [資格情報] タブ クリックし、次のいずれかの操作を行います。

      • [ シングル サインオンを使用しない ] オプションを選択し、SQL Server に接続するためのユーザー名とパスワードを指定します。 ユーザー名とパスワードでは大文字と小文字が区別されることに注意してください。

        Windows 認証を使用して SQL Server に接続する場合は、空のユーザー名とパスワードを指定します。

      • [ シングル サインオンの使用 ] オプションを選択し、関連する Enterprise シングル サインオン (SSO) アプリケーションを指定します。

        BizTalk Server に関するセキュリティの詳細については、「 SQL アダプターと BizTalk Server を使用したセキュリティ」を参照してください。

    5. [ メッセージ ] タブをクリックし、[ 送信 WCF メッセージ本文 ] セクションで [ テンプレート ] オプションを選択します。

    6. XML テキスト ボックスで、WCF メッセージの作成に使用するテンプレートを指定します。 これにより、WCF ベースの SQL アダプターのADD_LAST_EMP_XML_INFO操作に準拠するメッセージを作成します。

      送信 WCF メッセージ のテンプレートを指定する

      ADD_LAST_EMP_XML_INFO ストアド プロシージャの場合は、次のテンプレートを指定する必要があります。

      <ADD_LAST_EMP_XML_INFO xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo">  
      <xml_info>  
      <bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="string"/>  
      </xml_info>  
      </ADD_LAST_EMP_XML_INFO>  
      

      Von Bedeutung

      メッセージ テンプレートのエンコードは、送信ポートを使用して呼び出される操作のパラメーターの種類に関係なく、常に "string" である必要があります。 たとえば、ADD_LAST_EMP_XML_INFOは XML 型のパラメーターを受け取りますが、メッセージ テンプレートのエンコードは文字列です。

      このメッセージ テンプレートは、ストアド プロシージャの要求メッセージをコピーし、 <xml_info> タグ内の値を BizTalk メッセージ本文に置き換えることで作成できます。 ストアド プロシージャの要求メッセージを取得するには、Consume Adapter Service アドインを使用してプロシージャのスキーマを生成し、スキーマのインスタンスを生成して要求 XML を取得します。

    7. [ 送信ポートのプロパティ ] ダイアログ ボックスに戻すには、[OK] をクリック します

  9. 送信ハンドラーの一覧から BizTalkServerApplication を選択します。

  10. [送信パイプライン] ボックスの一覧から、PassThruTransmit に対応するパイプラインを選択します。

  11. OK をクリックします。

アプリケーションを起動する

BizTalk アプリケーションを起動するには、FILE 受信場所と WCF-Custom 送信ポートの両方を個別に起動します。 ここで、XML ファイルを FILE 受信場所にマップされたフォルダーにコピーする必要があります。 BizTalk アプリケーションによってファイルが使用され、XML 値が Employee テーブルの Address 列に挿入されます。 これを確認するには、SQL Server クライアントを使用し、Employee テーブルからレコードを選択します。

双方向 WCF-Custom 送信ポートの使用

このトピックの「 WCF-Custom 送信ポートを構成する方法」セクションの手順では、BizTalk オーケストレーションを使用せずに単一パラメーターでストアド プロシージャを実行するように一方向 WCF-Custom 送信ポートを構成する方法を示します。 ただし、このような場合は、ストアド プロシージャが正常に実行されたかどうかを確認するには、SQL Server データベースで、Employee テーブルの Address 列が更新されているかどうかを確認する必要があります。

代わりに、ストアド プロシージャが正常に実行された場合にも SQL Server から応答を取得する双方向 WCF-Custom 送信ポートを作成できます。 双方向の WCF-Custom ポートを作成する場合は、追加の手順をいくつか実行する必要があります。 前の手順で説明したように、ファイルの受信場所は引き続き必要であることに注意してください。

  1. ExecProcedure などの双方向 WCF-Custom 送信ポートを作成します。 送信ポートを構成する手順は、一方向の送信ポートの手順と似ています。 唯一の違いは、双方向ポートでは受信パイプラインも指定する必要があるということです。 受信パイプラインにPassThruReceiveを選択してください。

  2. FILE 送信ポートを作成します。 このポートは、SQL Server データベースからフォルダーに応答メッセージを削除します。 [ポートのプロパティ] ダイアログ ボックスの [ フィルター ] タブを使用して、WCF-Custom 送信ポートからすべての応答メッセージを受信するように FILE 送信ポートを構成します。

    1. [ 送信ポートのプロパティ ] ダイアログ ボックスの左側のウィンドウで、[ フィルター] をクリックします。

    2. 右のウィンドウで、プロパティ列のグリッドをクリックし、BTS.SPName プロパティを選択します。

    3. [演算子] 列で、[==] を選択します。

    4. [値] 列に、WCF-Custom 送信ポートの名前 (ExecProcedure) を指定します。

    3 つのポートをすべて起動します。 XML ファイルを FILE 受信場所にマップされたフォルダーにコピーします。 FILE 送信ポートにマップされているフォルダーで応答を探します。

こちらもご覧ください

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