1.脚本任务:设置(A)库存计数和(B)StoreNr的数组 2.数据流任务:在where子句中使用列表变量(过滤,从而提高性能)
*脚本任务必须从服务器 A 读取,数据流任务必须从服务器 B 读取。我不想使用链接服务器,也不想过滤下游数据流,而是想通过数据流源 (OLE DB) 中的 where 子句进行过滤。
1.脚本任务:设置(A)库存计数和(B)StoreNr的数组 2.数据流任务:在where子句中使用列表变量(过滤,从而提高性能)
*脚本任务必须从服务器 A 读取,数据流任务必须从服务器 B 读取。我不想使用链接服务器,也不想过滤下游数据流,而是想通过数据流源 (OLE DB) 中的 where 子句进行过滤。
您可以在两个数据流中执行此操作。
在第一:
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);
}
}
}
对第二个列表执行相同操作。
在第二个数据流中,将动态生成的查询设置为 sql 命令OLE DB Source
(取自Jamie Thomson 博客):
Expression
为"select * from table where columnToBeSearched in (" + @[User::ListToBeFetched] + ")"