SQL アダプターを使用してSQL Serverでストアド プロシージャを実行する
SQL Serverの Transact-SQL および CLR ストアド プロシージャは、アダプター サービス アドインの使用またはアダプター サービス参照の追加プラグインの使用中に、Microsoft BizTalk Adapter for SQL Server の操作として [プロシージャ] ノードの下に表示されます。 SQL アダプターによって公開される操作名は、SQL Serverのストアド プロシージャの名前と同じです。 ストアド プロシージャ内のすべてのパラメーターは、対応する操作で公開されます。 OUT パラメーターには、ストアド プロシージャの戻り値が含まれています。 ストアド プロシージャの結果セットは DataSet の配列です。 DataSet の詳細については、「」を参照してください https://go.microsoft.com/fwlink/?LinkId=196853。 ターゲット オブジェクトのスキーマ情報は、実行時に応答メッセージの一部として取得されます。
ただし、デザイン時にターゲット オブジェクトのスキーマ情報を取得する場合は、[アダプター サービス アドインの使用] または [アダプター サービス参照プラグインの追加] の [ 厳密に型指定されたプロシージャ ] ノードの下にあるプロシージャのスキーマを生成する必要があります。 同じストアド プロシージャが [ プロシージャ ] ノードと [ 厳密に型指定されたプロシージャ ] ノードの下に表示されることに注意してください。 ストアド プロシージャの戻り値は、DataSet の配列だけでなく、厳密に型指定されます。 スキーマ情報はデザイン時に使用できるため、ストアド プロシージャのスキーマを別の操作の別のスキーマにマップするために使用できます。 たとえば、厳密に型指定されたプロシージャに対して生成されたスキーマを、データベース テーブルの Insert 操作で生成されたスキーマにマップできます。
Note
次の場合、厳密に型指定されたストアド プロシージャのデザイン時にスキーマ情報を表示することはできません。
- 厳密に型指定されたストアド プロシージャの入力パラメーターとして、別のストアド プロシージャの戻り値であるカーソルを使用しています。
- これは、テーブルに対していくつかの操作を実行する CLR ストアド プロシージャです。
FOR XML 句を使用したストアド プロシージャのサポート
SQL アダプターを使用すると、FOR XML 句を含む SELECT ステートメントを持つストアド プロシージャを実行することもできます。 SELECT ステートメントで FOR XML 句を使用して、結果を行セットではなく XML として返します。 FOR XML 句の詳細については、「」を参照してください https://go.microsoft.com/fwlink/?LinkId=131402。
Note
BizTalk Serverで使用できる "ネイティブ" SQL アダプターでは、XML を返すストアド プロシージャ 、つまり SELECT ステートメントに FOR XML 句があるストアド プロシージャのみがサポートされます。 FOR XML 句を使用したストアド プロシージャのサポートにより、ストアド プロシージャ定義を変更することなく、WCF ベースの SQL アダプターを使用してこれらのストアド プロシージャを実行できます。
一時テーブルを使用したストアド プロシージャのサポート
SQL アダプターを使用すると、定義に一時テーブルを含むストアド プロシージャのメタデータを生成できます。 ただし、このようなストアド プロシージャの場合は、[アダプター サービス参照プラグインの追加] または [アダプター サービス アドインの使用] を使用しながら、[ プロシージャ ] ノードからのみストアド プロシージャを選択してメタデータを生成する必要があります。 アダプターでは、 厳密に型指定された プロシージャ ノードからこのようなストアド プロシージャのメタデータを生成することはできません。
名前のない列または同じ名前の列を含む結果セットのサポート
次の表は、SQL アダプターがストアド プロシージャと厳密に型指定されたストアド プロシージャの結果セット内の名前と同じ名前を持たない列を処理する方法を示しています。
結果セットには が含まれています... | ストアド プロシージャ | ストアド プロシージャの Strongly-Typed |
---|---|---|
名前のない列 | SQL アダプターは、列の名前を次のように生成します。"-" (ハイフン) なしで一意の ID (GUID) が生成され、生成された GUID は数字で始まる可能性がありますが、XML タグ名では使用できないため、GUID 文字列の前に "C" が付けられます。 | SQL アダプターでは、"UnNamedColumn[column_index]" という列の名前が生成されます。ここで、column_indexは '0' から始まります。 |
同じ名前の列 | 最初の列以外の列の名前には、"" (アンダースコア) と、"-" (ハイフン) のないランダムな GUID が追加されます。たとえば、"\[GUID]" です。 | SQL アダプターは、結果セット内の同じ名前の列をサポートせず、例外をスローします。 大事な: 結果セット内の列名に一意の名前があることを確認する必要があります。 |
Note
一般に、ストアド プロシージャと厳密に型指定されたストアド プロシージャの結果セット内のすべての列に名前を付け、一意の名前を付ける必要があります。
詳細情報は、次のとおりです。
ストアド プロシージャを実行する方法については、「BizTalk Serverを使用してSQL Serverストアド プロシージャを実行する」を参照してください。
FOR XML 句を持つストアド プロシージャを実行する方法については、「BizTalk Serverを使用して、SQL Serverで FOR XML 句を持つストアド プロシージャを実行する」を参照してください。
ストアド プロシージャのメッセージ スキーマについては、「プロシージャ と関数のメッセージ スキーマ」を参照してください。