SSIS 行计数变量值发送到日志

问题描述 投票:0回答:1

我有一个 SSIS 2019 包,其中有一个用于数据源的平面文件和用于目标的 SQL Server。来自平面文件源的是行计数任务,用于获取变量中保存的行数。我想在 SSIS 目录报告日志中捕获该变量值。意思是,转到SSIS目录,转到项目,选择包,右键单击报告,然后查看日志。谢谢。

variables logging ssis
1个回答
0
投票

创建一个 Int32 类型(或根据您的需要为 Int64)的变量

@[User::RowCount]
。初始化为零、-1 或您的要求指定的任何值。

将数据流任务添加到您的 SSIS 包中。选择一个来源,任何来源。在其后面添加行计数转换并选择您的

@[User::RowCount]
变量。

您可以将项目部署到 SSISDB 并使用任何日志记录级别运行该包:Basic、Performance、Verbose、None,但我找不到 SSIS 告诉您变量的最终值的地方。参数起始值,是的,就在报告中。

但是,您可以明确要求 SSIS 记录它,这是您在数据流任务之后连接的一个简单的 5 行脚本Task

在只读变量下拉列表中选择变量@[User::RowCount],然后在生成的编辑器中,将这些行添加到 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);
}

使用默认的基本日志记录运行包,然后单击概述报告中的消息链接。在某个地方,您将触发 OnInformation 事件,并且行计数转换使用的变量的值为 33。

现在,这对于一站式日志记录来说很好,但我真的鼓励您采用不同的方法,例如自定义表和执行 SQL 任务来填充它。否则,您必须每次都解析 ssisdb.catalog.operation_messages 表,然后解析字符串值以提取 33 的值(或其他值)。

© www.soinside.com 2019 - 2024. All rights reserved.