我在变量中使用记录集目标来创建数据集。 稍后在Script Component(源代码)中使用变量readonly,但是当我尝试在其他Script Component(source)中使用此变量时获取空数据集。我认为第一个脚本组件阻止了我的变量,不明白如何解决它。
VariableDispenser variableDispenser = (VariableDispenser)this.VariableDispenser;
variableDispenser.LockForRead("User::dsOrganization");
IDTSVariables100 vars;
variableDispenser.GetVariables(out vars);
OleDbDataAdapter oleDA = new OleDbDataAdapter();
DataTable dt = new DataTable();
var ds = vars["User::dsOrganization"].Value;
oleDA.Fill(dt, ds);
foreach (DataRow dr in dt.Rows)
{
Output0Buffer.AddRow();
Output0Buffer.Organization = dr["Organization"].ToString();
Output0Buffer.OrganizationCode = dr["OrganizationCode"].ToString();
Output0Buffer.SPOrganizationCode = dr["SPOrganizationCode"].ToString();
Output0Buffer.SPOrganizationMember = dr["SPOrganizationMember"].ToString();
}
vars.Unlock();
两个脚本组件使用相等代码第一个组件获得44行秒 - 无
如果将脚本组件更改为脚本任务一切正常。
答案 0 :(得分:1)
问题是,当您尝试第二次循环时,枚举器的指针位于记录集的末尾。尝试克隆记录集,然后再将其加载到数据集中。
但是,应避免将大型数据集加载到变量中。尝试评估和优化流程设计。