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