2011-11-14 55 views
1

如需更詳細的日誌記錄裏面,我想找回[系統:: TASKNAME]SSIS:使用系統:: TASKNAME數據流

眼下,從失敗我們去「腳本任務」的任務開始時,在那裏我獲取[System :: TaskName]並將其寫入日誌中。邏輯上,這將當前TASKNAME =「腳本任務」,而不是失敗的任務 enter image description here

問題是系統:: TASKNAME只知道里面的任務,邏輯...... 其實我想更新的變量「 User :: CurrentTaskName'從數據流中,=從任務內部。

如果我可以在數據流中使用「腳本任務」組件,但我無法找到它,這將是最容易的。 也許我需要一個解決方法。

希望你們大概理解我的意思......

在此先感謝!

+1

變量如果你只是想趕上錯誤消息,使用日誌商,確保了OnError事件被選中。隨着您向生產添加越來越多的軟件包,您將會體會到這種集中式錯誤日誌記錄機制,它幾乎不需要維護。 – brian

回答

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") 
5

從數據流的外觀來看,它看起來像是在嘗試實現錯誤日誌記錄。過去我使用事件處理程序來處理這類事情,我運氣不錯。它還具有清理佈局以及將來可以更輕鬆地進行維護的額外好處,因爲您無需保持從所有任務到錯誤處理的鏈接。

+0

Thx您的回覆。我知道,我正在使用錯誤處理,但在上面的屏幕截圖中,這是一個糟糕的例子,試圖獲取TaskName。 如果你可以給我一個錯誤處理任務的例子,它可以獲取/顯示/彈出'當前任務名',這將是超棒的...... Thx – laurens

+2

暴露給OnError錯誤處理程序的系統變量之一**是**'System :: TaskName'。 –

+1

@埃德蒙擁有它的權利。使用System :: TaskName。這應該包含調用處理程序時失敗的任務的名稱。 –