我正在尝试记录使用 BIML 生成的 SSIS 中变量值的所有更改。 我设法创建了一个事件处理程序,每次变量更改其值时都会写入。 当我记录时,我使用一个参数,我将其值设置为"系统变量值"。我将这个参数(带有变量名称和包名称的切换器)传递给 StorageProc,并在日志表中写入。 我的问题是,经常(但并非总是)该参数似乎没有任何价值。我在数据库日志表中看到一个新行,因此这意味着 evnt 已正确提出和处理,但参数似乎为空。 最奇怪的是,有时值被正确记录,但并非总是如此,不是针对相同的变量,不是针对相同的包,而是以非常随机的方式。
几个变量几乎可以同时更改值(数据库上的一些争用)这一事实会是一个问题吗?我对此表示怀疑,因为行本身是写在数据库中的。我什至尝试将"新值 = " + ? 也就是说,将参数值追加到固定字符串。固定部分写正确,但是..没有值。 更改值的变量的名称始终正确写入。
知道这可能是由于什么原因吗?
作为一种解决方法,我尝试使用 SSIS 的现成日志记录工具,但在这种情况下,在 SYSSSISLOG 表的消息列中,我只能读取更改的变量的名称,而不是其新值。
谢谢
您可以使用Event Handler
来执行此操作。转到Variables
页面,转到Variable Grid Options
,选中Raise event when variable value changes
,这些变量应该还有一个选项,即Raise Change Event
,默认为False
,更改为True
对于您需要跟踪更改的变量(日志)。并将日志记录任务放入Event handler
更新新行可能是参数的值已被重置,并且该值很可能等于blank
或whitespace
,但仍然被识别为值更改。
如果您不太确定何时发生,则可以为某个任务设置Breakpoint
并添加watch window
以查看值如何变化或该值是否会在过程中达到blank