6

Data Flow以下に示すように、それぞれが複数のテーブルのデータフローを持ついくつかのタスクを含むかなり単純なSSISパッケージがあります。ここに画像の説明を入力してください

制御フローでを使用して操作するユーザー定義の変数値に基づいて、これらの各データフローを実行できるようにしたいと考えていますScript Task。たとえば、変数(BESTELLDRUCKなど)の値がtrueの場合、このテーブルのデータフロー(ソース変換先タスク)を実行します。それ以外の場合は、このテーブルをスキップして別のテーブル(AKT_FEHLERなど)に進みます。同じデータフロータスクで。

これどうやってするの?前もって感謝します。

4

2 に答える 2

16

内で変換を無効または有効にすることはできませんData Flow Task。ただし、Control Flowタブでデータフロータスクを有効または無効にすることができます。

[制御フロー]タブでこれを行うための1つの可能な方法は次のとおりです。

可能であれば、ソース->宛先変換を個々のデータフロータスクに移動します。以下のようなものです。

制御フロー

ある条件に基づいてデータフロータスクを有効または無効にするために、フローごとに変数を作成したと仮定します。この例では、いくつかの値をハードコーディングしました。

変数

変数に基づいてデータフロータスクを動的に有効または無効にします。データフロータスクをクリックし、F4を押して表示しますProperties。[プロパティ]で、プロパティの横にある省略記号Expressionsボタンをクリックします。プロパティ式エディターが表示されます。

Property[無効]を選択し、省略記号ボタンを使用して式を入力します。変数は有効に宣言されていますが、プロパティのみが使用可能!@[User::Enable_BESTELLDRUCK]であるため、感嘆符に注意してください。反対の操作を行う必要があります。Disable

プロパティ式エディター

適切な変数を使用して、他のデータフロータスクに対してこのプロセスを繰り返します。パッケージを実行すると、変数Enable_AKT_FEHLERが値に設定されているため、2番目のデータフロータスクが実行されなかったことがわかりますFalse

お役に立てば幸いです。

実行

参照:

ForEachループコンテナ内に同じスキーマを持つ複数のテーブルをロードするには、以下のSOの回答を参照してください。MSAccessからSQLServerにデータを転送します。うまくいけば、それはあなたにアイデアを与えるはずです。

SSISパッケージ内のMSAccessテーブルのリストをプログラムで取得するにはどうすればよいですか?

于 2013-02-05T14:28:46.143 に答える
1

ここには、エージェント007が問題を解決するのに十分なポインタがあると思います。一般的なコメントをいくつか追加したいと思います。

  1. タスクを動的に有効/無効にすることは良い習慣ではありません。タスクを無効にするより良い方法は、優先順位制約内で式を使用することです。そのようなリファレンスの1つ:http ://www.sqlis.com/sqlis/post/Disabling-tasks-Through-Expressions.aspx

  2. 提案されているように、各STD(Source-Transform-Destination)を独自のDFTに変換します。親子パターンをさらによく使用します。これは、より多くのDFTの将来の追加をテストするのに役立ちます。

于 2013-02-06T02:07:51.153 に答える