0

我的所有控制流元素上都有 OnPostExecute 事件处理程序,但是一旦我将 OnError 处理程序放在包级别,我就再也看不到任务级别的处理程序了。这是一个已知的错误还是我做错了什么。

4

3 回答 3

1

这是因为 OnPostExecute 事件处理程序是在每个包任务中创建的。包级别指示所有任务的 OnPosteExecute 事件。

于 2012-06-15T20:18:24.480 回答
1

你是什​​么意思你看不到他们?您的意思是,在事件处理程序下以粗体列出的唯一内容是包的 OnError 吗?

在此处输入图像描述

如果是这样,请不要担心,您的所有包 OnPostExecute 事件仍然存在。诀窍是当您单击事件处理程序时光标的焦点位于包上。要查看与给定可执行文件关联的事件处理程序,请单击返回控制流,单击给定的可执行文件,然后单击事件处理程序。更简单的方法是只使用 Executable 选择器栏并深入了解它。

在此处输入图像描述

我在我的 Execute SQL Task 上定义了一个 OnPostExecute 事件,所以我点击了它并选择了 OK。

现在我可以看到该可执行文件的事件

在此处输入图像描述

如果您不想花一生的时间点击各种可执行文件来尝试查找某些内容,包资源管理器选项卡在这方面非常有用,而且我发现人们不使用它。

在这里,您可以快速看到我在执行 SQL 任务上定义了 2 个事件处理程序,一个用于 OnPostExecute,一个用于 OnError,此外还有我在包级别定义的 OnError 事件。

在此处输入图像描述

最后,快速说明一下操作顺序。鉴于我在控制流元素和包级别上定义的 OnError 事件处理程序的场景以及控制流元素上的 OnPostExecute 事件,当我的执行 SQL 任务引发错误(除以零)时,我将看到

  1. “执行 SQL 任务”的 OnError 事件触发
  2. “so_EventHandlerRajiv”(包)的 OnError 事件触发
  3. “执行 SQL 任务”的 OnPostExecute 事件触发

因此,OnError 将在 OnPostExecute 之前触发,并且给定的事件处理程序开始触发,它将渗透到所有侦听处理程序。

于 2012-06-16T15:41:33.373 回答
0

也许您可以使用包资源管理器查看所有已定义的事件处理程序,而不是单击每个控制流任务的属性。马里奥 http://msdn.microsoft.com/en-us/library/ms190114.aspx

于 2012-06-16T13:22:54.420 回答