0

私は非常に限られた知識でSSISパッケージに取り組んでいます。ビューから約300行を取得する「SQL実行タスク」が1つあります。結果セットをemployeeListオブジェクトに入れます。

次のステップは、これらのレコードをテーブルに挿入することです。ForEachループコンテナを作成して、「SQL実行タスク」をこのコンテナに入れてみました。私のパラメータマッピングは:

variable name      | direction | datatype| parameter name | parameter size 

User::employeeList | input     | varchar | 0  | -1.
User::employeeList | input     | varchar | 1  | -1.
User::employeeList | input     | varchar | 2  | -1.
User::employeeList | input     | varchar | 1  | -1.

..。

私が得るエラーは次のとおりです:エラー:データの入力で0xC002F210、SQLタスクの実行:クエリ "INSERT INTO [dbo]。[xxxx]([field1]、[Perso ..."の実行は次のエラーで失敗しました:"エラー結果をタイプ(DBTYPE_STR)の変数に抽出しているときに発生しました。考えられる失敗の理由:クエリの問題、「ResultSet」プロパティが正しく設定されていない、パラメータが正しく設定されていない、または接続が正しく確立されていない。

4

1 に答える 1

3

SQL 実行タスクは問題なくダンディですが、あなたの状況では、データ フローで十分であるように思えます。

既存のものを削除し、データ フローを制御フローにドラッグします。データ フローをダブルクリックし、OLE DB ソースと OLE DB 宛先を追加します。

OLE DB ソースで、OLE DB 接続マネージャーをソース接続の名前に変更します。「データアクセスモード」を からTable or Viewに変更しSQL Commandます。前者はクリックしやすいですが、同等のものを書くよりもパフォーマンスのオーバーヘッドがわずかに発生しますSELECT * FROM mytable。グレー表示されなくなったウィンドウに、クエリを入力します。

SELECT column1, column2, ... FROM dbo.MyView

一般的に言えば、必要なすべての列を列挙する必要があります。必要のない列を引き戻すとメモリが浪費され、それが SSIS を高速にします。

緑の矢印をソースから「OLE DB 宛先」に配線します。それをダブルクリックして、OLE DB 接続マネージャーをターゲット データベース接続に変更します。そこで、データ アクセス モードを に変更しますTable or view - fast load。これにより、データを一括でロードできますが、デフォルトTable or viewではフローする行ごとに挿入が発行され、低速です。ドロップダウンでターゲット テーブル名 dbo.xxxx を見つけて、[マッピング] タブをクリックします名前の一致に基づいて自動マップする必要があります。物事が期待どおりにマップされていることを確認します。[OK] をクリックします。

保存すると動作するはずです。

于 2013-01-25T22:39:48.993 に答える