web-dev-qa-db-ja.com

SSISパッケージ内にエラーログまたはカスタムエラーログを作成するにはどうすればよいですか?

私はSQL2008-SSISパッケージに取り組んでいます。 C#コードからパッケージを実行しています。これは、SQLテーブルへの単純なフラットファイル(.csv)です。

C#コードから、実行結果はSUCCESSとして取得されますが、パッケージ内ではトランザクションが実行されていないため、値は実際にはエクスポートされません。

ログファイルを読み取ってデバッグする必要があります。

パッケージ内にエラーログまたはログファイルを作成するにはどうすればよいですか?

7
goofyui

SSISでログ機能を構成する1つの方法は次のとおりです。この例では、メール送信タスクが失敗するように構成されており、パッケージが失敗したときにOnErrorおよびOnTaskFailedメッセージを格納するSQLServerベースのログを有効にしました。あなたにも興味があるかもしれない他のイベントがあります。私が取り組んできたプロジェクトでは、これら2つのタスクにより、SSISパッケージで発生する問題のほとんどを特定することができました。

ステップバイステップのプロセス:

  1. この例のSSISパッケージには、スクリーンショット#1に示すように構成されたメール送信タスクが含まれています。ログテーブルにいくつかのエラーメッセージが表示されるように、失敗するように構成されています。
  2. SSISパッケージをクリックします。
  3. メニューで、[SSIS]-> [Logging ...]を選択します。スクリーンショット#2を参照してください。
  4. [SSISログの構成:]ダイアログで、プロバイダータイプを選択し、[追加]をクリックします。この例ではSQLServerを選択しました。 Nameチェックボックスをオンにして、Configuration列の下にデータソースを入力します。ここでSQLServerは接続マネージャーの名前です。 SSISは、選択したデータベースにdbo.sysssislogという名前のテーブルとストアドプロシージャdbo.sp_ssis_addlogentryを作成します。以下のスクリーンショット#を参照してください。
  5. エラーをキャプチャする必要がある場合は、チェックボックスOnErrorおよびOnTaskFailedを選択します。以下のスクリーンショット#4を参照してください。
  6. データフロータスク内でのサンプルパッケージの実行を、以下のスクリーンショット#5に示します。
  7. ログテーブルdbo.sysssislogの出力例を、以下のスクリーンショット#6に示します。 ideventsource、およびmessageの列をいくつか表示しただけです。テーブルには他の列があります。メッセージ列にはエラーメッセージが含まれています。この場合、メール送信タスクに記載されているサーバー名が間違っています。ソース列には、失敗したタスクが含まれています。この場合、パッケージ名はSSISLoggingExampleであり、メール送信タスクの名前はメールタスクです。エラーメッセージは、タスクからパッケージレベルにバブルアップします。したがって、エラーメッセージは、タスクとパッケージレベルで2回ログに記録されます。

お役に立てば幸いです。

スクリーンショット#1:

1

スクリーンショット#2:

2

スクリーンショット#3:

3

スクリーンショット#4:

4

スクリーンショット#5:

5

スクリーンショット#6:

6

21
user756519

SSISでエラーをログに記録するのは非常に簡単です。 [イベントハンドラー]タブに移動し、ドロップダウンから[OnError]を選択します。ここで、エラーについて電子メールを送信したり、エラーをDBに記録したり、テキストファイルに書き込んだりするための独自のカスタムロジックを開発できます。

また、SSISで使用可能な既存のロギングメカニズムから選択することもできます。メニュー「SSIS」をクリックすると、最初のオプションが「ロギング」として表示され、次にエラー/警告および必要な多くの情報をログに記録するためのさまざまなオプションが表示されます。

2
pramodtech