Dts.Events.FireInformation方法中的fireAgain参数的目的是什么?

sea*_*ard 5 sql-server ssis dts

从脚本激发Integration Services事件时,我对Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase上Microsoft.SqlServer.Dts.Tasks.ScriptTask.EventsObjectWrapper Dts属性的FireInformation方法有所了解。最后一个参数fireAgain通过引用传递。该文档解释说:“继续发射是正确的;否则,是错误的。” 为什么通过引用传递参数?在某些情况下,该方法将值设置为true并要求调用方重复调用吗?如果调用者将该值设置为false,则意味着什么?

bil*_*nkc 3

FirstInformation 提供抑制进一步事件的机制的原因是成本。引发事件的成本可能很高,并且根据定义,这些消息本质上是信息性的,因此允许日志提供程序或自定义任务停止引发事件是有意义的。

来自IDTSComponentEvents.FireInformation 方法

由于事件的触发可能代价高昂,因此运行时引擎提供了一种机制来抑制您不感兴趣的事件。每个事件触发方法都有一个 FireAgain 参数。如果此变量的值为 false,则在方法返回后,调用者在当前执行期间不会再次触发此事件。

  • 嗯,这很难。我认为你的答案指明了方向,但文档让我感到困惑和渴望。并非每个事件方法都有 fireAgain 参数。FireError 返回一个布尔值而不是提供参数。FireWarning 两者都没有提供。“如果变量的值为 false,则在方法返回后,调用者将不会再次触发此事件...”这一行很难解释。我不禁想知道这是否是必然的。我没有找到专门处理这种情况的例子。 (2认同)