有没有办法快速查看所有现有的 SSIS 包事件处理程序?

Is there any way to quickly see ALL existing SSIS package event handlers?

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

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

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

另一种观点会使这更容易。或者:

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

我是不是漏掉了什么,实际上已经有一个很好的方法可以看到这个吗?

Package Explorer 正是您要找的。这是 non-running 包的最后一个选项卡。

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

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

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