2011-11-14 2 views
1

내부는 시스템 :: TASKNAME, 나는 지금SSIS : 우리가 '스크립트 작업'으로 이동 실패 작업에서 시작할 때 흐름 자세한 로깅을 위해

를 [시스템 :: TASKNAME]을 검색 할 거기서 [System :: TaskName]을 가져 와서 로그에 기록합니다. 논리적으로이 '나는 변수를 업데이트 할 현재 TASKNAME ='스크립트 작업 '대신 실패한 작업 enter image description here

문제를 실제로 시스템 ::에만 작업 내부 알고있다 TASKNAME, 논리적 ... 되어 기록 사용자 :: CurrentTaskName '데이터 흐름 내부에서 = 작업 내부에서.

데이터 흐름 내에서 '스크립트 작업'구성 요소를 사용할 수 있다면이 방법이 가장 쉽지만 찾을 수는 없습니다. 아마도 해결 방법이 필요합니다.

너희들이 대략 내 뜻을 이해하길 바랍니다 ...

미리 감사드립니다!

+1

같은 변수에 접근. 프로덕션 환경에 점점 더 많은 패키지를 추가함에 따라 유지 관리가 거의 필요없는 중앙 집중식 오류 로깅 메커니즘에 감사하게 생각하실 것입니다. 귀하의 회신에는 – 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 

방금, 오류 메시지를 잡을 로그 공급자를 사용하고의 OnError 이벤트가 선택되어 있는지 확인하고자하는 경우 다음 그래서

ReadVariable("System::TaskName") 
5

데이터 흐름에 따라 오류 로깅을 구현하는 것처럼 보입니다. 과거에는 이런 종류의 이벤트 처리기를 사용하여 행운을 빌 렸습니다. 모든 작업에서 오류 처리까지의 연결을 유지할 필요가 없기 때문에 레이아웃을 정리하고 패키지 유지 관리를 더 쉽게 할 수 있다는 부가적인 이점이 있습니다.

+0

Thx입니다. 나도 알아, 내가 오류 처리를 사용하고 있지만 이것은 위의 스크린 샷, TaskName 가져 오기 시도 나쁜 예입니다. "현재 TaskName"을 표시/팝업/팝업 할 수있는 오류 처리 태스크의 예제를 제공 할 수 있다면 ... Thx – laurens

+2

OnError 오류 처리기에 노출 된 시스템 변수 중 하나 **는 **'System :: TaskName'입니다. –

+1

@ 에드먼드 (Emmund)는 그 권리가 있습니다. System :: TaskName을 사용하십시오. 그 이름은 처리기가 호출 될 때 실패한 작업의 이름을 포함해야합니다. –