微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用数据流中的脚本组件更改包内 SSIS 变量的值

如何解决如何使用数据流中的脚本组件更改包内 SSIS 变量的值

enter image description here

我正在下载一个 json 文件,并使用数据流和脚本组件对象成功将其放入表中。

在我的 json 文件中有我应该导入的数字行数以及导入数据需要多少页。

例如 “计数”:1925, “当前页面”:1, “总页数”:2, “结果”:

我在我的 url 上获取 json 文件,我必须指定我想要获取页面。 例如&page=" + 页码

我想自动化我的 SSIS 包来做到这一点。我已经设法分配用户变量以获取导入的计数行数,通过在后执行区域中分配使用脚本组件中的读写函数导入的行数。

我想使用 For Loop 容器来循环数据流并继续导入数据,直到导入的行数等于要导入的行数。

我的问题是当我执行控制流时,我不断收到错误

为读写访问锁定的变量集合在 PostExecute 之外不可用。

如何更改变量以便我可以在 for 循环容器中使用它们?

根据 Brad 的要求添加代码

public override void PostExecute()
{
    base.PostExecute();
   
    Variables.RowsImported = i;
    Variables.RowsTobeImported = totalcount;

    if (totalcount > i)
        Variables.PageNoExtra = Variables.PageNoExtra + 1;

    MessageBox.Show(Variables.RowsImported.ToString());
    MessageBox.Show(Variables.RowsTobeImported.ToString());
    //MessageBox.Show(Variables.PageNoExtra.ToString());
}

解决方法

您的问题似乎是访问 PostExecute 中的变量,将其移到 PostExecute 之外。我从脚本任务访问变量,如以下代码示例。我以前在以不同的方式访问它时遇到了问题,但我不记得这个问题,但我知道这解决了它,而且我一直都是这样做的。

要以这种方式执行此操作,您必须像在屏幕截图中一样在脚本任务属性管理器中设置读/写变量,以便通过这种方式访问​​它们。

另外一个问题可能是你试图对 PostExecute 上的变量做一些事情,因为它在执行完成之前不会这样做,这可能会导致问题(不确定,但我从未在 PostExecute 中做过任何变量工作) .

// Read variable from SSIS package in C# script task
string VariableUseInScript = Dts.Variables["User::VariableAccessedFromSSISPackage"].Value.ToString();


// SET variable value in SSIS package to use in other parts of package
Dts.Variables("[SSISVariableValueToSet]").Value = "ValueToSet";

enter image description here

注意:在上面的屏幕截图中,我每个只有 1 个变量。您可以在每一个中有多个,或者它们都可以在 ReadOnly(如果您不更新它们)或 ReadWrite(如果您正在更新它们)中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。