2017-06-08 19 views
2

SSISスクリプトコンポーネントタスク(コントロールフローに追加できるスクリプトタスクではなく、データフロー内に追加されたスクリプトコンポーネントタスク)では、 try, catchブロックのキャッチ部分に扱ういくつかのエラー:SSIS - スクリプトコンポーネント - 結果に基づいてアイコンを変更

// No connection was created. Exit gracefully 
bool cancelOnError = false; 
ComponentMetaData.FireError(ErrorCode: 10, SubComponent: "SubComponent", 
Description: "Couldn't set up the connection. This could be because an invalid host was 
provided, or due to a firewall blocking the connection.", HelpFile: "", HelpContext: 0, 
pbCancel: out cancelOnError); 

このすべては、私は自分のコードに上げるエラーをキャッチし、スクリプトタスクで、正常に動作します。私はまた、ログにエラーを見ることができます:

Error: 0xA at DFT Extract, SubComponent: Couldn't set up the connection. 
This could be because an invalid host was provided, or due to a firewall 
blocking the connection. 

はしかし、仕事上のアイコンが緑色である、と私は結果を処理するために定義され、後続のタスクがトリガーされます(処理するためには何もかかわらず、存在しない、このよう特定のエラー)は、従来の任意のデータを処理するために発生:

Green icons

データフローが正しく赤い十字のアイコンを示しています。スクリプトコンポーネントのアイコンを変更する方法はありますか?それとも、公然とショーのエラーをシミュレートするための良い方法ですか?

私は、スクリプトタスクとスクリプトコンポーネント間の差を示す、this page on Microsoftを発見し、また述べている:

をスクリプトコンポーネントは、データフロータスクの一部として実行され、 レポート結果は、これらのいずれかを使用していませんプロパティ。

これは私には非常に有望なことではありませんが、誰かがうまくいくと思っています。私は主に、緑色のアイコンを表示することは、エラーをトラップすると、やや誤解を招くと思います。

答えて

0

理由だけではなく、真の

にcancelonerror値を変更しない
bool cancelOnError = true; 

それともThrow exception方法

throw new Exception("Couldn't set up the connection. This could be because an invalid host was 
provided, or due to a firewall blocking the connection."); 

を使用することができます回避策

あなたの目標ではありませんでした行を無視する場合正しく処理するには、(DT_BOOL型の)OutputBufferに列を追加し、sエラーがある場合はこの列の値をFalseに、それ以外の場合は値をTrueにする必要があります。

スクリプトコンポーネントの後に条件付き分割を追加して、この列に基づいて行をフィルタします。同様の表現で:

[FlagColumn] == True 
+0

お礼ありがとうございます。以前は「True」に設定しようとしましたが、実際には何の違いも感じられませんでした。私は、私が正しく処理したものが出力に送られないかもしれないということを大抵は恐れている(私たちは待ち行列からメッセージを取得し、一旦待ち行列から外れたら、それらを再び見ることはないので、正確に私たちのために重要です)。私はすぐにExceptionをしばらくすることができます。提案していただきありがとう:) – SchmitzIT

+0

@SchmitzIT私は回避策を追加しました。 – Hadi

関連する問題