【问题标题】:Which SSIS System Variable holds error text哪个 SSIS 系统变量包含错误文本
【发布时间】:2012-02-06 01:22:25
【问题描述】:

我正在使用 SQL Server 2008 作业运行 SSIS 包。程序包在运行时的某个时间点崩溃。我创建了自己的机制来获取错误并将其记录在表格中。所以我可以看到特定任务有错误,但找不到错误是什么。

当我从 BIDS 运行相同的包时,它运行良好。没有错误。

我想要做的是,我需要将该错误字符串写入我自己的表中,该表显示在“执行结果”选项卡中。

所以问题是哪个系统变量在 SSIS 中保存错误字符串。

【问题讨论】:

    标签: ssis


    【解决方案1】:

    错误存储在ErrorDescription system variable 中。有关如何获取错误描述的示例,请参阅Handling Errors in the Data Flow

    此外,如果您想将错误信息捕获到表中,SSIS 支持使用SQL Server Log Providerlogging 捕获到表中。您还可以自定义日志记录。

    【讨论】:

    • 此系统变量在数据流事件处理程序 (VS2008) 中不可用,还有其他选择吗?
    • 已经有一段时间了,但如果我没记错的话,它应该是可用的。有时间我会检查的。
    • 为此创建了一个问题,因为我似乎无法在 SO 或其他地方找到任何答案stackoverflow.com/questions/24016911/…
    • 我面临同样的情况。我尝试使用脚本任务来捕获错误,但系统变量在选项中不可用。然后我尝试像这样配置 Via DB:yo*tube.com/watch?v=yvJPHo5qXhc *用“U”更改星号
    【解决方案2】:

    太容易了。

    1. 左键单击(突出显示)要捕获错误事件的对象(脚本或数据流等)
    2. 单击“事件处理程序”- 屏幕应打开,其中 Executable = 您单击的对象且事件处理程序 = OnError
    3. 点击网址(点击此处创建....)
    4. 从 SSIS 工具箱中拖动 Execute SQL 对象
    5. 配置到你想要存放错误信息的数据库/表
    6. 写入 INSERT INTO DB.Schema.Table(DBName, SchemaName, TableName,ErrorMessage,DateAdded)
    7. 写 VALUES (?,?,?,'I am smart',getdate())
    8. 单击参数并选择 USER::Variables 作为 ?'s + my comment。

    因为这是在数据库服务器上运行的,所以它会传入 ?'s。我的 SAC 已作为值存在于数据库中,但您将选择 System::ErrorDescription 作为参数 3。请记住,此数组是基于 0 的。不要试图命名参数。相反,将它们编号为 0 到 ~?数据类型基于您所做的;我的都是 VARCHAR 所以... :)

    这是一个比只记录服务器允许您记录的任何内容更好的解决方案。 我还可以添加一个计数器变量并在任何我喜欢的地方进行调整;然后将其传递给事件 OnError。这将使我能够准确指出最后一个成功对象完成的位置;最适用于脚本对象,但也适用于其他领域。

    我正在使用它,因此我可以处理数千个周期而不会真正使包失败。如果表不存在或列不存在,我只需将其记录下来以供以后进一步查看。哦,是的,我在数百个数据库中循环记录它们的架构和使用的最大列大小;不要与最大列大小混淆。 示例: TelephoneNumber 来自 char(500) 的源列(绝对是糟糕的编程,但是......你不能改变一切......)。我捕获该列的最大 len 并调整目标列以适应该大小 +/- 某个百分比。

    如果表不存在或列不存在,我会记录错误并继续搅动。最后,我可以评估这些条目,看看我是否真的可以将它们从我的仓库中删除。这种情况在 TEST 和 STAGE 环境中比在 PROD 中发生得更多。但是,当更改通过 PROD 时,我肯定会在它进入仓库时识别它。

    一切都已配置,包括动态 MERGE/JOIN、INSERT、SELECT、ELEMENTS、SIZES、USAGESIZE、IDENTITY、SOURCEORDER 等,并将数据转换为目标数据类型。

    因为系统版本的日志不会为您提供此类操作可能需要的粒度。如果设置正确,此 OnError 事件处理程序可以。

    【讨论】:

      【解决方案3】:

      检查this!他已经逐步解释了如何配置具有错误消息参数的 SSIS 日志记录。

      【讨论】:

        猜你喜欢
        • 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
        相关资源
        最近更新 更多