今現在、エラーが出ることなく動いてるのだが!
原因は不明・・・ (゚д゚lll)
そして・・・
致命的なエラーとしかエラーログに残らないのは、エラーを取得していないためだということにようやく気がついた (´ヘ`;)
On Error Resume Next ステートメントを設定していないときに実行時エラーが発生すると、そのエラーは致命的なエラーとなり、エラー メッセージが表示されてプログラムの実行が停止します。
そこでデータ変換タスクで発生しているエラーを取得することに。
しかし、ここで疑問。
DTSのエラーログにどうやってハンドルしたエラーを書き出すんじゃ?一生懸命ググるも何にも成果なし・・・。同じようなことで悩んでいる人は、随分前にいた。
なので、どうしようかと無い頭で考えた。
- データ変換タスクの変換スクリプト内でエラーを取得し、グローバル変数にセット
- グローバル変数にセットした値をSQL実行タスクで、エラーテーブルにInsert
単純にこういうこと(常識?)
ほんとうにこんな風にするのか知らんけど、
もう藁をも掴む感じで以下のコードを追記。
On Error Resume Next
‘ 処理コード
If Err.Number <> 0 Then
DTSGlobalVariables(“ErrPackage”).Value = “TestPackage”
DTSGlobalVariables(“ErrNumber”).Value = Err.Number
DTSGlobalVariables(“ErrDescription”).Value = Err.Description
DTSGlobalVariables(“ErrSource”).Value = Err.Source
DTSGlobalVariables(“ErrTime”).Value = NowMain = DTSTransformStat_Error
Else
Main = DTSTransformStat_OK
End If
でワークフローで失敗したときに、書き出したグローバル変数をSQL実行タスクで書き出します。うーん。今のところ謎の「致命的なエラー」が発生しないため、拾えるか不明です。。。
コメント