SSIS中的事件处理程序优先级

时间:2012-06-15 18:08:05

标签: ssis bids

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

enter image description here

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

enter image description here

我在执行SQL任务上定义了一个OnPostExecute事件,所以我点击它并选择了OK。

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

enter image description here

如果您不想一辈子点击各种可执行文件来查找某些内容,那么Package Explorer选项卡在这方面非常有用,而且我发现人们不会使用它。

在这里你可以快速看到我在我的执行SQL任务中定义了2个事件处理程序,一个用于OnPostExecute,另一个用于OnError,以及我在包级别定义的OnError事件。

enter image description here

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

  1. “执行SQL任务”的OnError事件触发
  2. “so_EventHandlerRajiv”的(包)OnError事件触发
  3. “执行SQL任务”的OnPostExecute事件触发
  4. 因此,OnError将在OnPostExecute之前触发,并且一个给定的事件处理程序开始触发,它将渗透到所有侦听处理程序。

答案 2 :(得分:0)

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