2011-11-14 4 views
1

内部利用システム:: TaskName:指定は、私が今、SSIS:私たちは、「スクリプトタスク」に行く失敗したタスクから起動する場合には、データフローより詳細なログ記録については

を[システム:: TaskName:指定]を取得したいですそこに[System :: TaskName]を取り出してログに書き出します。論理的にこれは「私は、変数を更新する現在のTaskName:指定=「スクリプトタスク」の代わりに、失敗したタスク enter image description here

問題を実際にシステム::唯一のタスク内で知っているTaskName:指定、論理... れる書き込みUser :: CurrentTaskName 'をデータフローの内側から、=タスクの内側から。

これはデータフロー内で 'スクリプトタスク'コンポーネントを使用することができますが、それが見つからない場合は最も簡単です。 おそらく私は回避策が必要です。

は、事前に

おかげで...あなたたちは私が何を意味するか、ほぼ理解してほしいです!

+1

のような変数にアクセスします。本番環境にますます多くのパッケージを追加するにつれて、この一元管理されたエラーロギングメカニズムは、維持する必要がほとんどありません。返信は – brian

答えて

4

ScriptNameの中に以下を追加することで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エラーハンドラに公開されるシステム変数の1つ**は** 'System :: TaskName'です。 –

+1

@エドモンドにはその権利があります。 System :: TaskNameを使用します。これには、ハンドラが呼び出されたときに失敗するタスクの名前が含まれている必要があります。 –

関連する問題