0

1.スクリプト タスク: (A) 在庫数と (B) StoreNr の配列を設定する 2.データ フロー タスク: where 句でリスト変数を使用する (フィルタリングしてパフォーマンスを高速化するため)

*スクリプト タスクはサーバー A から読み取る必要があり、データ フロー タスクはサーバー B から読み取る必要があります。

4

1 に答える 1

0

2 つのデータ フローで実行できます。

一番に:

  1. ソース テーブルから where で使用する値を選択します
  2. ListToBeFetched次のような宛先ウィッチ コードとして Srcipt コンポーネントを使用して、この値をコンマ区切りのリストとして文字列変数に格納します。

using System.Text;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
    StringBuilder sb;
    public override void PreExecute()
    {
        base.PreExecute();
        sb = new StringBuilder();
    }

    public override void PostExecute()
    {
        base.PostExecute();
        Variables.IdListToBeFetched = sb.ToString().TrimEnd(',');
    }

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        if (!Row.Value_IsNull)
        {
            sb.AppendFormat("{0},", Row.Value);
        }
    }
}

2 番目のリストでも同じことを行います。

2 番目のデータ フローでは、動的に生成されたクエリを SQL コマンドとして設定しますOLE DB Source( Jamie Thomson ブログから取得)。

  1. SourceSQL という名前の新しい変数を作成します
  2. SourceSQL 変数のプロパティ ペインを開きます (F4 キーを押します)。
  3. EvaluateAsExpression=TRUE を設定します
  4. Expressionに設定"select * from table where columnToBeSearched in (" + @[User::ListToBeFetched] + ")"
  5. OLE DB ソース コンポーネントの場合は、エディターを開きます
  6. データ アクセス モードを「変数からの SQL コマンド」に設定します。
  7. VariableName = "SourceSQL" を設定します
于 2012-09-23T16:07:47.677 に答える