次の方法で共有


SQL アダプターを使用して、大きなデータ型を持つテーブルとビューに対する操作を実行する

SQL アダプターを使用すると、アダプター クライアントは、大きなデータ型 (varchar(max)、nvarchar(max)、または varbinary(max) の列のデータを読み取って更新できます。 このような列からデータを読み取るために、アダプター クライアントは Select 操作を使用できます。 このような列にデータを挿入または更新するために、アダプターは Set<column_name> 操作を公開します。ここで、 <column_name> は varchar(max)、nvarchar(max)、または varbinary(max) 型の列の名前です。

さらに、SQL Server 2008 では、varbinay(max) 列にテキスト ドキュメントや画像などの非構造化データを格納できます。 このような非構造化データは FILESTREAM データと呼ばれます。 FILESTREAM データは、ファイル システム上のファイルとして格納できます。 SQL アダプターを使用すると、クライアントは varbinary(max) 型の列に FILESTREAM データを入力できます。 FILESTREAM ストレージの詳細については、「 FILESTREAM の概要」を参照してください。

このトピックでは、SQL Server を実行しているコンピューターと、FILESTREAM データを挿入または更新するためにアダプター クライアントを実行しているコンピューターで実行する必要がある特定のタスクについて説明します。 このトピックでは、FILESTREAM データを挿入する Set<column_name> 操作の実行手順についても説明します。

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

[前提条件]

SQL Server を実行しているコンピューターとアダプター クライアントを実行しているコンピューターで、次のタスクを実行する必要があります。

  • SQL Server を実行しているコンピューター上

  • アダプター クライアントを実行しているコンピューターで

    • SQL Client Connectivity SDK がインストールされている必要があります。 SQL Server 2008 セットアップを実行し、ウィザードの [機能の選択] ページで SQL Client Connectivity SDK を選択することで、SQL Client Connectivity SDK をインストールできます。 アダプターは、SQL Client Connectivity SDK と共にインストールされた sqlncli10.dllを使用して FILESTREAM 操作を実行します。

    • アダプター クライアントを実行しているコンピューターで MSDTC を構成する必要があります。 MSDTC を構成する方法については、 SQL Server とアダプター クライアントでの MSDTC の構成に関するページを参照してください。

    これらのタスクを完了すると、SQL Server 2008 データベース テーブルに FILESTREAM データを挿入または更新するように設定されます。

このトピックで大規模なデータ型に対する操作を示す方法

大きなデータ型を持つテーブルに対して Set<column_name> 操作を実行する方法を示すために、列 ID と Document を持つテーブルレコードを取得します。 Id 列は uniqueidentifier 型で、GUID を受け取ります。 Document 列の型は VARBINARY(MAX) です。 ID 列に既に GUID '438B7B4C-5491-409F-BCC1-78817C399EC3' があるとします。 Document 列を更新するために、アダプターは SetDocument 操作を公開します。

SQL Server 2008 では、FILESTREAM 操作を示すために、Document 列に FILESTREAM データを格納できることを前提としています。

SQL Server データベースに対して操作を実行する方法

BizTalk Server で SQL アダプターを使用して SQL Server データベースに対する操作を実行するには、SQL アダプターを使用して BizTalk アプリケーションを開発するための構成要素で説明されている手続き型タスクが含まれます。 大きなデータ型を持つテーブルに対して操作を実行するには、次のタスクを実行します。

  1. BizTalk プロジェクトを作成し、Set<column_name> 操作のスキーマを生成します。 このトピックでは、レコード テーブルの SetDocument 操作のスキーマを生成します。

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

  3. レコード テーブルで SetDocument 操作を呼び出すオーケストレーションを作成します。

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

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

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

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

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

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

スキーマの生成

大きなデータ型の列の値を更新する方法を示すために、レコード テーブルの SetDocument 操作のスキーマを生成します。 BizTalk プロジェクトを作成し、Consume Adapter Service アドインを使用してスキーマを生成する必要があります。 スキーマの生成方法の詳細については、「 SQL アダプターを使用した Visual Studio での SQL Server 操作のメタデータの取得 」を参照してください。

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

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

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

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

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

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

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

    これを使用する 目的
    識別子 Request」と入力します
    メッセージの種類 ドロップダウン リストから [ スキーマ] を展開し、 SetOperation.TableOperation_dbo_Records.SetDocument を選択します。SetOperation は BizTalk プロジェクトの名前です。 TableOperation_dbo_Recordsは、レコード テーブルに対する SetDocument 操作に対して生成されるスキーマです。
  6. 手順 2. を繰り返して、新しいメッセージを作成します。 新しいメッセージの [プロパティ ] ウィンドウで、次の操作を行います。

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

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

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

FILESTREAM 操作を実行するためのオーケストレーション

メッセージ図形の追加

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

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

ポートの追加

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

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

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

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

特性
メッセージ受信 - メッセージ要求に設定する
- 操作MessageIn.FileStream.Request に設定する
メッセージを送信 - メッセージ要求に設定する
- 操作LOBPort.FileStream.Request に設定する
応答を受信する - メッセージ応答に設定する
- 操作LOBPort.FileStream.Response に設定する
SendResponse - メッセージ応答に設定する
- 操作ResponseOut.FileStream.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 アダプターへの物理ポート バインドを手動で構成する」を参照してください

      Von Bedeutung

      FILESTREAM データを入力する操作は、トランザクション内で実行する必要があります。 そのため、WCF-Custom または WCF-SQL の送信ポートで UseAmbientTransaction バインド プロパティが True に設定されていることを確認してください。 バインディング プロパティの詳細については、「 BizTalk Adapter for SQL Server アダプターのバインドプロパティ」を参照してください。

      Von Bedeutung

      FILESTREAM データを挿入する操作を実行するには、常に Windows 認証を使用して、WCF-Custom または送信ポート WCF-SQL SQL Server に接続する必要があります。 そのため、[ポートのプロパティ] ダイアログ ボックスの [ 資格情報 ] タブで、[ シングル サインオンを使用しない ] オプションを選択し、ユーザー名とパスワードを空白のままにします。

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

アプリケーションの起動

レコード テーブルに対して SetDocument 操作を実行するには、BizTalk アプリケーションを起動する必要があります。 BizTalk アプリケーションを起動する手順については、「オーケストレーションを 開始する方法」を参照してください。

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

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

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

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

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

操作の実行

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

<SetDocument xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Records">
  <Filter>WHERE Id='438B7B4C-5491-409F-BCC1-78817C399EC3'</Filter>
  <Data>UwBlAHQAdgBfAHYAYQByAGIAaQBuAGEAcgB5AE0AQQBYAA==</Data>
</SetDocument>

Von Bedeutung

Filter要素には、アダプターがレコードを更新する WHERE 句を含める必要があります。 Data要素には、Document 列に挿入する base64 でエンコードされた値が含まれている必要があります。

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

<?xml version="1.0" encoding="utf-8" ?>
<SetDocumentResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Records" />

アダプターは 、Set<column_name> 操作に対して空の応答を送信します。

ベスト プラクティス

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

こちらもご覧ください

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