返回当前的SSIS错误计数

And*_*own 5 sql vb.net ssis

在SSIS包中有MaximumErrorCount属性.使用此属性意味着在程序包执行期间,程序包会计算错误数.

在执行一组特别复杂的软件包(通常在各个点上将MaximumErrorCount设置为更高级别)的各个阶段,我希望能够捕获当前的错误计数 - 但我似乎找不到一种机制来做这个.

理想情况下它将是一个系统变量(它不是我能看到的)所以我可以随意构建表达式,但更糟糕的是我似乎无法找到在脚本中捕获它的方法(我的VB.网络技能很差,所以我可能已经错过了,但我在对象浏览器中搜索和搜索没有成功).

任何SSIS Guru都知道如何在程序包执行期间捕获给定点的当前错误计数?

(我已经尝试将一个简单的变量增量嵌入到包级别的OnError事件处理程序中,但在极少数情况下,这似乎与引擎"计数"的实际错误数量不一致.无论如何,如果有的话一个内置的计数器,这将是一个非常优先,更优雅的)

提前致谢.

Mar*_*icz 3

通常,您将使用约束来指导错误处理流程。即,如果特定任务失败,则用失败约束来引导控制流。如果要根据错误数量创建容差,则需要在每个任务之后捕获变量中的每个错误(同样,使用约束和脚本任务)。

我认为没有一个公开的计数器可以保存任务或容器的当前错误数量,但这样的计数器的范围将限于每个对象和包本身。听起来即使你能做到这一点,工作起来也会很痛苦。

我的建议是尽可能使用开箱即用的东西:

  • 使用约束来指导成功和失败的行为
  • 不要使用事件处理程序,因为它们就像一个看不见的 GOTO,你永远不知道它们在哪里
  • 继续编写代码,使其成功而不是容忍错误。增加最大错误计数却永远不知道出了什么问题是很可怕的。我的意思是除非你不关心你的数据。我这样说并不是开玩笑——这在将数据迁移到测试环境时可能是完全可以接受的行为。
  • 谨慎使用变量。其中一些包中可能有一些关键点需要注意,因此不要添加迷宫般的变量,这将变得更难以排除故障和维护。如果您可以随着时间的推移将最大错误计数降低到 1,您可能只会更改包中的几个点(80/20?)。如果你真的必须重写整个事情,那么……那么一开始就很糟糕,最好摆脱,对吧?