4

我需要检查我在 Visual Studio 2017 中运行的 foreach 循环容器任务的迭代次数。我怎样才能做到这一点?

4

1 回答 1

5

(1) 使用 Expression Task 计算迭代次数

SSIS 2012+ 中可用的任务

在 Foreach 循环容器中,没有包含迭代次数的属性。您可以通过创建 Int 类型的 SSIS 变量来实现此目的,其初始值 equal 0。例子@[User::Counter]

在 Foreach 循环容器内,Expression Task使用以下表达式添加一个:

@[User::Counter] = @[User::Counter] + 1

有用的网址

(2) 使用脚本任务计算迭代次数

您可以使用脚本任务来实现相同的过程,方法是创建计数器变量,在脚本任务中将其选为读写变量,然后在脚本中将类似的行添加到主函数中:

Dts.Variables["User::Counter"].Value = Convert.ToInt32(Dts.Variables["User::Counter"].Value) + 1;

参考

显示数据

有不同的数据显示方式。一种是使用脚本任务。指定您的@[User::Counter]变量在 ReadOnly 集合中,然后将值发送到运行日志中

    public void Main()
    {
        bool fireAgain = false;
        string message = "{0}::{1} : {2}";
        foreach (var item in Dts.Variables)
        {
            Dts.Events.FireInformation(0, "SCR Echo Back", string.Format(message, item.Namespace, item.Name, item.Value), string.Empty, 0, ref fireAgain);
        }

        Dts.TaskResult = (int)ScriptResults.Success;
    }

另一种方法是Name通过表达式在 Foreach 循环中设置任务的属性。右键单击循环中的任务并选择属性。在“属性”部分中找到该[+]Expressions集合,然后单击右侧的省略号...,然后在新窗口中,选择左侧的名称并将右侧的表达式设置为

"My Task " + RIGHT("000" + (DT_WSTR,3) @[User::Counter], 3)

这将连接两个字符串“我的任务”并将 Counter 变量转换为字符串并用零填充它,因此它始终是一个 3 位数字

于 2019-02-15T22:07:46.117 回答