【问题标题】:SSIS Child Package Name in OnErrorOnError 中的 SSIS 子包名称
【发布时间】:2018-09-19 13:51:23
【问题描述】:

我听取了许多在线的建议,并在 SSIS 中创建了一个序列容器来保存我所有的子包,这样它还可以包含一个 OnError 事件来聚合来自所有子包的所有错误。

在 OnError 事件中,我有以下 Expression 任务,使用此表达式:

@[User::AllFailureErrors] = @[User::AllFailureErrors] + "
Package: " + @[System::SourceName] +"
Description: "+ @[System::SourceDescription] +"
Error: "+ @[System::ErrorDescription]

它将所有错误汇总到一个字符串变量中,然后我将其包含在电子邮件中。它在大多数情况下工作得很好——它告诉我所有的错误是什么,以及出错的任务(在子包中)。

但是,我不知道如何捕获的是包含引发错误的任务的子包的名称。没有这些信息就很难调试,而且我还没有弄清楚如何在不使用非常冗长的名称重命名所有子包中的所有任务的情况下获得它。

有人知道如何捕捉这个吗?

请注意,我目前拥有 SQL Server 2008 R2,但很快将升级到 2014,据我所知,它具有一些额外的 SSIS 日志记录功能。

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    是的,您可以通过在子包中的 OnError 事件处理程序中使用脚本任务来设置父包中变量的值。在子包中,将System::PackageName 系统变量分配给父包中的变量。它不会显示在脚本任务的 ReadWriteVariables 字段中,但键入父变量的名称将允许子包访问它。以下行是使用 C# 的示例,它将子包的名称分配给父包中的变量。分配后,子包的名称也将在父包的 OnError 事件处理程序中可用。

    Dts.Variables["User::ParentPackageVar"].Value = Dts.Variables["System::PackageName"].Value;
    

    【讨论】:

    • 我必须先学习如何使用一些基本脚本,但我打算尽快尝试一下,如果可行,我会接受你的回答 - 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多