【问题标题】:How use variable dataset twice in SSIS package如何在 SSIS 包中使用变量数据集两次
【发布时间】:2012-05-02 04:37:52
【问题描述】:

我使用记录集目标在变量中创建数据集。 后来在脚本组件(源)中使用只读变量,但是当我尝试在其他脚本组件(源)中使用这个变量时,得到空数据集。我认为第一个脚本组件阻止了我的变量,不明白如何修复它。

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 行第二个 - 无

如果将脚本组件更改为脚本任务,一切正常。

【问题讨论】:

  • 邮政编码 - 没有它我们无法弄清楚。

标签: c# sql-server-2008 ssis


【解决方案1】:

问题在于,当您尝试第二次循环遍历它时,枚举器的指针位于记录集的末尾。在将记录集加载到数据集之前尝试克隆记录集。

但是,应避免将大型数据集加载到变量中。尝试评估和优化您的流程设计。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多