0

Access DB と SQL Server DB の 2 つのソースを持つデータ フロー タスクを使用したいと考えています。次に、データを操作し、最終的に 2 番目のソースである同じ SQL Server でストアド プロシージャを呼び出します。

したがってExecute SQL Task、データを操作して最後にストアドプロシージャを呼び出したいので、を使用できません。

どのツールボックス コンポーネントを使用し、ストアド プロシージャが呼び出す形式は?

このようなストアド プロシージャを使用して OLE DB Destination を実行しようとしました。

Exec sppUpdateAATable1 ?,?
4

2 に答える 2

1

SSIS は、パイプラインの概念を使用して DataFlow タスクを編成します。ソースから宛先へのデータ フローと、このデータの処理はその間で行われます。ストアド プロシージャでの処理結果をパラメーターとして使用するため、パイプラインの概念では実行できません。SPもデータで何かを行うため、SPは実際にはデータの宛先ではありません。

インメモリRecordset(宛先) にデータを入力し、ForEach ループ コンテナーを使用して、レコードセットの行ごとに SP を実行できます。

アップデート

パッケージは次のようになります。

データ フロー タスク: Access への OLE DB 接続 SQL Server への OLE DB 接続 2 つのデータ ストリームを結合するには、UNOIN タスクを使用します。レコードセット データを保持します。

ForEach ループ コンテナー。プロパティで、ループ コンテナーのタイプ - ADO Recorset を選択し、ループ プロパティで MyRecordsetVar 変数を指定します。レコードセットの各列のデータを保持するために、さらに 2 つ (または必要な数) の変数を割り当てます。レコードセットの各行のデータがこれらの変数に渡されます。一度に 1 行ずつ。

ループ内に Execute SQL タスクを配置します。タスクの入力「メニュー」で、レコードセットの列からのデータを持つ INPUT 変数を指定します。あなたはそれを行う方法を知っていると思います。

クエリを としてタスクに入れますexecute sp_MyProc ?,?

これでいいはずです。

于 2013-06-24T15:15:21.880 に答える
0

レコードセットの送信先と foreach ループ ルートの問題を解決し、代わりにデータ フローでOLE DB コマンドを使用できます。それを通過する行ごとに、そのストアド プロシージャを起動します。

于 2013-06-25T21:04:58.110 に答える