2011-03-25 97 views
1

我有一个SSIS包为Foreach循环容器中的每个记录发送邮件。在发送电子邮件后,我会向“发送给[email protected]的邮件”中的变量(在脚本任务中)添加一些文本。处理SSIS中的发送邮件任务失败

但是,我还想记录何时电子邮件失败。在发送邮件任务后添加了另一个脚本任务,并将约束更改为“失败”。然后,我将其中一个电子邮件地址更改为无效格式(如“abc”)。当我运行它时,发送邮件任务失败,但没有通过具有失败约束的脚本任务。换句话说,整个软件包因为这个失败而停下来。我尝试过使用FailPackageOnFailure和FailParentOnFailure属性来搞乱,但我仍然无法让它工作。

有没有更好的方式来处理呢?我认为我的方法很简单,但这不是预期的行为(对我来说,无论如何)。

我将不胜感激任何建议或意见。 谢谢!

回答

3

你能陷阱onerror事件处理程序错误的发送邮件任务?

+0

好主意。我将脚本任务添加到“发送邮件”任务的“OnError”事件中。当我用我的“坏”电子邮件地址运行它时,脚本任务图标变为绿色(表示它已处理)。不幸的是,发送邮件任务仍然会导致程序包失败。对于发送邮件任务,我将FailPackageOnFailure和FailParentOnFailure设置为“False”。感谢您的想法,但我不确定接下来会发生什么(?) – Loki70 2011-03-25 14:37:31

+0

您是否能够在发送邮件任务后使用完成约束(而不是成功或失败),以便程序包继续执行,而不管成功与否特定任务? – grapefruitmoon 2011-03-25 14:48:39

+0

就是这样!我不知道为什么我没有想到这一点。我想我只是习惯了“成功”的约束,我没有正确地思考它。非常感谢您的帮助! – Loki70 2011-03-25 15:34:22

0

前段时间我做了同样的事情,我有一个变量锁的问题: 我在一些变量(登录名,密码,SSL启用...)时检索SMTP凭证,当我尝试使用相同的变量发送另一封电子邮件,但仍然被第一个脚本任务锁定(因此失败)。 我希望获得变量并在第一个电子邮件脚本任务中以编程方式释放它们(try-catch-finally),所以我确信在第二个电子邮件脚本中不会有变量锁。

希望这个帮助