SSIS で、Web サービスからのデータを使用して csv ファイルを作成しようとしています。
制御フローで、出力をユーザー変数に保存する Web サービス タスクを作成しました。
Web サービス タスクが完了すると、データ フロー タスクが開始されます。
データ フロー タスクには単一の XML ソースがあり、データ アクセス モードは "変数からの XML データ" に設定され、(おそらく) Web サービスからの XML データを持つ変数を指します。
DFT の前後にブレークポイントを設定すると、その変数が期待どおりの XML テキストに設定されていることが証明されます。
たとえば、XML は次のようになります (機密情報を保護するために名前が変更されています)。
<?xml version="1.0" encoding="utf-16"?>
<ArrayOfMyItemObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MyItemObject>
<OrderID xmlns="http://webservices.mycompany.com/MyPath/">111111</OrderID>
<ItemID xmlns="http://webservices.mycompany.com/MyPath/">123456</ItemID>
</MyItemObject>
<MyItemObject>
<OrderID xmlns="http://webservices.mycompany.com/MyPath/">222222</OrderID>
<ItemID xmlns="http://webservices.mycompany.com/MyPath/">678901</ItemID>
</MyItemObject>
<MyItemObject>
<OrderID xmlns="http://webservices.mycompany.com/MyPath/">333333</OrderID>
<ItemID xmlns="http://webservices.mycompany.com/MyPath/">234567</ItemID>
</MyItemObject>
<MyItemObject>
<OrderID xmlns="http://webservices.mycompany.com/MyPath/">444444</OrderID>
<ItemID xmlns="http://webservices.mycompany.com/MyPath/">890123</ItemID>
</MyItemObject>
</ArrayOfMyItemObject>
そのデータ フロー タスクは、単純にフラット ファイルの宛先 (csv ファイル) に処理されます。フラット ファイルの列は、XML の値にマップされます。
ただし、これを実行すると、列名のみが取得され、データは取得されません。
同じ Web サービスを使用して別の Web サービス タスクを実行し、その出力を直接ファイルに入れることで、Web サービス タスクが期待どおりの結果を返すことを確認しました。