【问题标题】:Event Handler precedence in SSISSSIS 中的事件处理程序优先级
【发布时间】:2012-06-15 18:08:05
【问题描述】:

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

【问题讨论】:

    标签: ssis bids


    【解决方案1】:

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

    【讨论】:

    • 那么,这是否意味着我(在每个任务上)创建的执行后事件被包级处理程序覆盖了?我仍然可以看到两者的价值!
    • 不,它没有被覆盖。您会看到这两种情况,因为包正在加载其事件处理程序,而任务正在加载其事件处理程序。
    【解决方案2】:

    你没看到他们是什么意思?您的意思是,在 Event handler 下以粗体列出的唯一内容是包的 OnError 吗?

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

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

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

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

    除了我在包级别定义的 OnError 事件之外,您可以在这里快速看到我在 Execute SQL Task 上定义了 2 个事件处理程序,一个用于 OnPostExecute,一个用于 OnError。

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-03-22
        • 2023-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多