【问题标题】:Is there any way to quickly see ALL existing SSIS package event handlers?有什么方法可以快速查看所有现有的 SSIS 包事件处理程序?
【发布时间】:2020-09-24 11:02:57
【问题描述】:

SSIS 事件处理程序非常有用。事件处理程序可以在包本身的级别添加,也可以为包中的任何可执行文件添加。这与 Propagate 属性一起,对于允许某些操作以自己的方式处理错误非常有用。例如,一个循环可以通过记录“这一行的键 [whatever] 有问题”来对错误做出反应,继续处理其余的行,而不触发包的错误处理程序,该处理程序被保存为更致命的,一般错误(例如服务器宕机)。

事件处理程序的位置数量也是一个诅咒。在 Visual Studio 中,您可以在 Event Handlers 选项卡中查看、添加或更改事件处理程序。如果我想为任务 ExecuteSomeSQL 或序列容器 DoSomeThings 添加事件处理程序,或者为这些我已经知道的可执行文件找到事件处理程序,那就太好了。

但它不适合快速找出包中的哪些可执行文件实际上有任何事件处理程序。为此,我必须在可执行文件树中单击 每个 可执行文件,并查看每个文件在 Event Handlers 下是否有任何内容。

另一种观点会使这更容易。要么:

  1. 以非树的方式显示所有现有的事件处理程序,就像一个列表一样。 Package.OnError、Package.OnTaskFailed、(序列)DoSomeStuff.OnPostExecute 等...
  2. 或者,允许过滤树视图以仅显示具有任何事件处理程序的可执行文件。

我是否遗漏了什么,实际上已经有一个很好的方法来查看这个吗?

【问题讨论】:

    标签: error-handling ssis


    【解决方案1】:

    Package Explorer 就是您要找的。这是非运行包的最后一个选项卡。

    每个级别都有“可执行文件”和“事件处理程序”部分。当您展开其中一个时,您会看到其中列出的内容。

    我的示例是一个 Foreach 循环,其中包含一个数据流任务。数据流具有带有序列容器的 OnError 事件处理程序,以及带有带有脚本任务的序列容器的 OnPostExecute。幸运的是,您不能在事件处理程序上添加事件处理程序(在早期版本中您可能已经能够这样做)。

    否则,我认为您正在考虑编写自定义代码来抓取您的包。

    【讨论】:

    • 谢谢。这稍微容易一些,因为它在主窗格中而不是在下拉列表中。仍然受到“树”问题的困扰——很好地使结构清晰,但不能快速查看所有现有的处理程序。我将不得不忍受它,直到安静的一天,我可以摆弄一些自定义代码(并首先克服我对 XML 的过敏......)
    猜你喜欢
    • 1970-01-01
    • 2016-09-06
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2018-10-21
    • 2013-12-10
    相关资源
    最近更新 更多