【问题标题】:SSIS send mail for errors [duplicate]SSIS发送错误邮件[重复]
【发布时间】:2011-08-10 23:07:26
【问题描述】:

如果包执行中有任何错误,我如何发送包含错误详细信息的电子邮件? 基本上我怎样才能获得错误详情并将它们放入发送邮件任务的消息中?

【问题讨论】:

  • 同一个主题的三个问题,你不接受你的好答案,你只是重申问题并再次问......为什么?

标签: ssis


【解决方案1】:

这是一个例子:

假设我有一个 sql 任务,我想收到关于“任务失败”的电子邮件,并附上错误的描述。

  1. 现在拖动电子邮件任务,并在失败时从 sql 任务到电子邮件任务给出先例约束。
  2. 在电子邮件任务中,提供 smtp 连接、发件人、收件人电子邮件地址、主题、消息等
  3. 为错误消息创建用户变量
  4. 为任务失败或错误设置事件处理程序,并使用包级别创建脚本任务。
  5. 在脚本任务中..我们需要分配系统变量和用户变量。
  6. 确保属性 - 禁用事件处理程序应为 false,然后只有它会读取系统变量。

最后执行包..如果发生任何错误,您将收到带有描述的电子邮件。

谢谢

R

【讨论】:

    【解决方案2】:

    这就是我们所做的。我们使用 SSIS 的日志系统将所有错误记录到表中。

    然后在包级别创建一个事件处理程序。在事件处理程序中,当失败时我会发送一封电子邮件,其中包含包的名称(我们总是将其作为变量),失败的任务的名称(为此使用变量 System::SourceName,花了我一段时间找到它。)和日志表的查询,以使支持团队能够快速提取详细信息(电子邮件正文的一部分,我使用变量,但您不必这样做)。

    【讨论】:

    • System::PackageName 还保存了包的名称,因此您无需创建变量来保存它。如果您使用默认的日志记录格式,您的日志查询将是“Select * from dbo.sysdtslog90 where executionID =”以及 System:ExecutionInstanceGuid 的值。 ** 这些在 Sql Server 2005 中有效的变量和表名在其他版本中可能会有所不同**
    • 我们这样做是因为我们的元数据数据库中的名称可能与包名称不完全匹配,我需要使用该名称。而且我们的查询不同,因为我们在元数据库中将日志信息解析为对用户更友好的格式。但是,如果您不使用自定义元数据库,您的观点是完全正确的,William。
    猜你喜欢
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    相关资源
    最近更新 更多