プロが教えるわが家の防犯対策術!

いつもお世話になっております。

SQLserver2000のDTSを利用して、ファイルの内容をDBに取り込んでいます。
このパッケージでは、2つのファイルを取り込む処理を行っているのですが、
1つ目のデータソースのファイルが0件の場合、
「データファイルマッピング作成時のエラー:
 ファイルを格納しているボリュームが外部的に変更された為、
 開かれているファイルが無効になりました。」
というエラーとなり、そこでパッケージが終了します。

できれば、1つ目のファイルが0件なら、次のファイル取り込みに進みたいのですが、
実現する方法はありますでしょうか?

よろしくお願いいたします。

A 回答 (1件)

DTSはSSISとは違って、コンテナもないし、Or条件で後続を指定することもできないので、通常はデータフローのActiveX設定で「実行しない」にするなどでステップをスキップしようとすると、後続の処理も実行されないで終わってしまいます。


したがって、前提後続を維持したままでどうしてもスキップを実装したい場合は以下のようにします。

1)1つ目のファイル取込の前にActiveXスクリプトタスクを置き、以下の処理を記述する
Function Main()
 Set fso = CreateObject("Scripting.FileSystemObject")
 Set f = fso.OpenTextFile("対象ファイル")
 If f.AtEndOfStream Then
  Set oPkg = DTSGlobalVariables.Parent
  oPkg.Steps("1つ目のファイル取込のステップ名").ExecutionStatus=DTSStepExecStat_Completed
 End If
 f.Close
 Set f = Nothing
 Main = DTSTaskExecResult_Success
End Function

2)2つ目のファイル取込との間のワークフローを「成功」ではなく「完了」にする

見ての通りで、ファイルが空かどうか調べ、空の場合はファイル取込のステータスを先に「完了」に変更してしまいます。
(「成功」にしようとするとうまくいかない可能性があるので、上記でお勧めしておきます)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

お恥ずかしい程の知識不足で、最初、ステップ名の指定をどうするのか迷いましたが
ワークフローのプロパティに表示される名前を指定してやって成功しました!

本当に 本当にありがとうございました。
これで思うように処理できそうです!!

お礼日時:2009/06/06 08:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す