1.Script任务:设置(A)库存计数和(B)StoreNr的数组 2.数据流任务:在where子句中使用列表变量(过滤从而加快性能)
*脚本任务必须从服务器A和服务器B的数据流任务中读取。 我不想使用链接服务器,也不想过滤数据流的下游,而是希望过滤数据流源(OLE DB)中的where子句。
答案 0 :(得分:0)
您可以在两个数据流中完成。
首先:
ListToBeFetched
中,作为目标代码类似于:
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);
}
}
}
对第二个清单做同样的事。
在第二个数据流中将动态生成的查询设置为OLE DB Source
中的sql命令(取自Jamie Thomson blog):
Expression
设为"select * from table where columnToBeSearched in (" + @[User::ListToBeFetched] + ")"