SSIS:在数据流中使用System :: TaskName

时间:2011-11-14 15:05:48

标签: sql-server logging ssis business-intelligence

有关更详细的日志记录,我想检索[System :: TaskName]

现在,当从失败的任务开始我们转到'脚本任务'时,我获取[System :: TaskName]并将其写入日志中。从逻辑上讲,这会写入当前的TaskName ='Script task'而不是失败的任务 enter image description here

问题是System :: TaskName只知道任务内部,逻辑... 实际上我想从数据流内部更新变量'User :: CurrentTaskName',=来自任务内部。

如果我可以在数据流中使用“脚本任务”组件,这将是最简单的,但我找不到。 可能我需要一个解决方法。

希望大家明白我的意思......

提前致谢!

2 个答案:

答案 0 :(得分:5)

从数据流的外观来看,您似乎正在尝试实现错误记录。我过去曾经为这类事情使用事件处理程序运气好。它还具有清理布局和将来更容易维护包的额外好处,因为您不需要保持从所有任务到错误处理的链接。

答案 1 :(得分:4)

我可以通过在脚本组件中添加以下内容来访问TaskName。

Private Function ReadVariable(ByVal varName As String) As Object
    Dim result As Object
    Try
        Dim vars As IDTSVariables100
        Me.VariableDispenser.LockForRead(varName)
        Me.VariableDispenser.GetVariables(vars)
        Try
            result = vars(varName).Value
        Catch ex As Exception
            Throw ex
        Finally
            vars.Unlock()
        End Try
    Catch ex As Exception
        Throw ex
    End Try
    Return result
End Function

然后像这样访问变量

ReadVariable("System::TaskName")