SSIS使用变量值记录OnVariableValueChanged

时间:2017-03-28 14:26:22

标签: variables logging ssis

我正在尝试记录使用BIML生成的SSIS中变量值的所有更改。 我设法创建了一个事件处理程序,每次变量更改其值时都会写入。 当我记录时,我使用一个参数,其值设置为" System.VariableValue"。我将此参数(带有variableName和PackageName的togheter)传递给StoredProc并写入日志表。 我的问题是经常(但并非总是)似乎参数没有任何价值。我在DB Log表中看到一个新行,这意味着evnt被正确引发并处理但是参数似乎是空的。 最奇怪的是,有时值正确记录但不总是记录,不是针对相同的变量,而是针对相同的包,而是以非常随机的方式记录。

几个变量几乎可以同时改变值(在DB上有一些争用),这可能是一个问题吗?我怀疑它,因为行本身写在数据库上。我甚至试图写出一个像“新价值”这样的价值。 +?也就是说,将参数值附加到固定字符串。固定部分写得正确,但没有价值。 更改值的变量名称始终正确写入。

知道这可能是什么原因?

作为一种解决方法,我尝试使用SSIS的现成日志记录工具,但在这种情况下,在SYSSSISLOG表的消息列中,我只能读取已更改的变量的名称,而不是其新值。

thankx

1 个答案:

答案 0 :(得分:1)

您可以使用Event Handler来执行此操作。转到Variables页面,转到Variable Grid Options,检查Raise event when variable value changes,这些变量应该还有一个选项,Raise Change Event,默认为{{1对于那些需要跟踪更改的变量(日志),请更改为False。并将记录任务放入True

<强>更新 新行可能是已重置参数的值,该值很可能等于Event handlerblank,但仍被识别为值更改。

如果您不确定何时发生这种情况,可以将whitespace设置为特定任务并添加Breakpoint以查看值如何更改或值是否会达到watch window过程的中间