[DTS] スケジュール起動で、何故かエラーになる? その2

今現在、エラーが出ることなく動いてるのだが!
原因は不明・・・ (゚д゚lll)

そして・・・

致命的なエラーとしかエラーログに残らないのは、エラーを取得していないためだということにようやく気がついた (´ヘ`;)

On Error Resume Next ステートメントを設定していないときに実行時エラーが発生すると、そのエラーは致命的なエラーとなり、エラー メッセージが表示されてプログラムの実行が停止します。

VBScript ランゲージ リファレンス – On Error ステートメント

そこでデータ変換タスクで発生しているエラーを取得することに。

しかし、ここで疑問。
DTSのエラーログにどうやってハンドルしたエラーを書き出すんじゃ?一生懸命ググるも何にも成果なし・・・。同じようなことで悩んでいる人は、随分前にいた。

なので、どうしようかと無い頭で考えた。

  1. データ変換タスクの変換スクリプト内でエラーを取得し、グローバル変数にセット
  2. グローバル変数にセットした値を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 = Now

Main = DTSTransformStat_Error
Else
Main = DTSTransformStat_OK
End If

でワークフローで失敗したときに、書き出したグローバル変数をSQL実行タスクで書き出します。うーん。今のところ謎の「致命的なエラー」が発生しないため、拾えるか不明です。。。

[DTS] スケジュール起動で、何故かエラーになる? その2

コメントを残す