1.スクリプト タスク: (A) 在庫数と (B) StoreNr の配列を設定する 2.データ フロー タスク: where 句でリスト変数を使用する (フィルタリングしてパフォーマンスを高速化するため)
*スクリプト タスクはサーバー A から読み取る必要があり、データ フロー タスクはサーバー B から読み取る必要があります。
1.スクリプト タスク: (A) 在庫数と (B) StoreNr の配列を設定する 2.データ フロー タスク: where 句でリスト変数を使用する (フィルタリングしてパフォーマンスを高速化するため)
*スクリプト タスクはサーバー A から読み取る必要があり、データ フロー タスクはサーバー B から読み取る必要があります。
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 ブログから取得)。
Expression
に設定"select * from table where columnToBeSearched in (" + @[User::ListToBeFetched] + ")"