【发布时间】:2012-06-15 18:08:05
【问题描述】:
我的所有控制流元素上都有 OnPostExecute 事件处理程序,但是一旦我将 OnError 处理程序放在包级别,我就再也看不到任务级别的处理程序了。 这是一个已知的错误还是我做错了什么。
【问题讨论】:
我的所有控制流元素上都有 OnPostExecute 事件处理程序,但是一旦我将 OnError 处理程序放在包级别,我就再也看不到任务级别的处理程序了。 这是一个已知的错误还是我做错了什么。
【问题讨论】:
这是因为 OnPostExecute 事件处理程序是在每个包任务中创建的。包级别指示所有任务的 OnPosteExecute 事件。
【讨论】:
你没看到他们是什么意思?您的意思是,在 Event handler 下以粗体列出的唯一内容是包的 OnError 吗?
如果是这样,请不要担心,您的所有包 OnPostExecute 事件仍然存在。诀窍是当您单击事件处理程序时光标的焦点位于包上。要查看与给定可执行文件关联的事件处理程序,请单击返回控制流,单击给定的可执行文件,然后单击事件处理程序。更简单的方法是只使用 Executable 选择器栏并深入了解它。
我在我的执行 SQL 任务上定义了一个 OnPostExecute 事件,所以我点击了它并选择了确定。
现在我可以看到该可执行文件的事件
如果您不想花一生的时间点击各种可执行文件来寻找某些东西,包资源管理器选项卡在这方面非常有用,而且我发现人们不会使用它。
除了我在包级别定义的 OnError 事件之外,您可以在这里快速看到我在 Execute SQL Task 上定义了 2 个事件处理程序,一个用于 OnPostExecute,一个用于 OnError。
最后,简要说明一下操作顺序。鉴于我在控制流元素和包级别上定义的 OnError 事件处理程序的场景以及控制流元素上的 OnPostExecute 事件,当我的 Execute SQL 任务引发错误(除以零)时,我将看到
因此,OnError 将在 OnPostExecute 之前触发,并且给定的事件处理程序开始触发,它将渗透到所有侦听处理程序。
【讨论】:
也许您可以使用包资源管理器查看所有已定义的事件处理程序,而不是单击每个控制流任务的属性。 马里奥 http://msdn.microsoft.com/en-us/library/ms190114.aspx
【讨论】: