我有一个 SSIS 包并设置事件处理程序(OnError)来向我发送带有日志的消息:
“包:” + @[System::PackageName] + " " +"开始时间: " + (DT_WSTR, 40) @[System::StartTime] + " " +"用户名: " + @[系统::用户名] + " " +"机器名称: "+ @[System::MachineName] + " " +"任务名称:" + @[System::SourceName] + " " +@[系统::错误描述]
问题是,它会触发并向我发送每个组件的消息,即使它们运行成功。我什至暂时禁用了所有组件,但仍然收到了来自它的电子邮件。 我可以将所有组件放在一个大的 ForEach 组件中,但由于它需要大量内存,我不喜欢这样做。
此外,我检查了所有警告并修复了它们。 重建解决方案。 禁用/启用所有组件。
除非另有说明,事件处理程序会继续在链上引发事件。 “否则”设置是一个名为
Propagate
的系统变量 https://learn.microsoft.com/en-us/sql/integration-services/system-variables?view=sql-server-ver16
Propagate 布尔值 指示事件是否传播到更高级别的事件处理程序。
注意:在包验证过程中,Propagate 变量的值将被忽略。如果您在子包中将 Propagate 设置为 False,这不会阻止事件传播到父包。
现在,我已经用 SSIS 做了一点,即使在这个阶段,我不得不说我对抑制错误事件的信心仍然很低——也许我只是有一些奇怪的用例。