13 モデルケース12「処理完了通知やエラーを管理者にメール送信する」

一般的なSSISの運用では、SQL Server Agentなどを利用してパッケージを自動処理させることが多いと思います。そのため、SSISデザイナのようなビジュアルな画面で処理結果を確認することができません。処理結果として出力されたデータを見たり、SQL Server Agentのログを見たりする必要があります。

そんなときに便利なのが「メール送信タスク」です。このタスクを利用すると、正常終了したとき、あるいはエラーが発生したときなど、タスクフローの一部として指定アドレスにメール送信することができます。また、エラーデータをテキストファイルに出力するようになっている場合、そのファイルをメールに添付して送信することもできます。

ここでは、モデルケース6「データ転送時のエラーを処理する」の「エラーレコードをファイル出力して続行させる方法」で作ったパッケージにメール送信のタスクを追加し、すべての処理が完了した場合に処理完了の通知を管理者にメールで送るとともに、エラーデータが出力されたファイルを添付するような仕組みを作ってみます。


  1. ソリューションエクスプローラ上で「Case06_2.dtsx」をコピーして貼り付け、「Case12.dtsx」という名前に変更して開きます。


  2. ツールボックスより、「メール送信タスク」を選択してデザイナ上にドラッグ&ドロップします。


  3. 「データフロータスク」から出ている緑色のコネクタを「メール送信タスク」へとドラッグ&ドロップし、CSVファイル出力後、最後にメール送信するようなフローにします。


  4. 次に、「メール送信タスク」をダブルクリックして、「メール送信タスクエディタ」ダイアログを開きます。


  5. 画面左のリストから「メール」を選択して画面を切り替えます。

  6. 「SmtpConnetion」プロパティ欄の右端にある[▼]ボタンをクリックして「<新しい接続>」を選択します。


  7. 「SMTP接続マネージャエディタ」ダイアログが開きますので、ここで任意の「名前」を設定するとともに、メール送信を行う「SMTPサーバー」等の項目を指定して[OK]ボタンをクリックします。


  8. 「メール送信タスクエディタ」に戻ったら、メールの送信元アドレス(From)、送信先アドレス(To)、件名(Subject)等の項目を指定します。ここでは「Cc」や「BCc」も指定できます。


  9. 次に、「MessageSourceType」プロパティを選択します。
    ここではデフォルトの「直接入力」のままでかまいませんが、「ファイル接続」(あとで説明します)や「変数」を指定することもできます。なお、「直接入力」とは、メール本文の内容を任意の固定的な文章で指定する設定のことです。


  10. 上記で「直接入力」を指定しましたので、「MessageSource」プロパティ欄にメール本文の文章を入力します。
    改行を伴うような長い文章を入力する場合には、プロパティ入力欄の右端にある[...]ボタンのクリックで表示される「メッセージの送信元」ダイアログから入力することでもできます。


  11. 最後に、「Attachments」プロパティにメールに添付するファイルを、[...]ボタンを使うなどして指定します。今回の場合はエラーデータが出力されるテキストファイルを指定します。


  12. [OK]ボタンをクリックして「メール送信タスクエディタ」ダイアログを閉じます。
    なおこの時点で、SMTPもひとつの“接続”ですので、接続マネージャの一覧に上記設定が追加されます。SMTPサーバーの設定をあとで変更する場合には、これをダブルクリックします。


  13. パッケージを実行して、SSIS上の処理結果を確認するとともに、実際に送信されたメールの内容を確認します。

    ●送信されたメールの内容と添付ファイルの内容


なお、ここで設定した手順の場合、途中のタスクで予期せぬエラーが発生した場合、そこでパッケージの処理が停止しますので、最後に配置されたタスクであるメール送信は実行されません。メールが来なければ何らかのエラーが発生したと判断する必要があります。

また、転送時のエラーデータが1件もない場合、エラーが出力されるファイルは空(今回の場合は正確には見出し行のみ)ですが、それでも空のファイルがメールに添付されます。添付ファイルを開いてそこにデータがなければデータ変換上のエラーはなかったと判断する必要があります。



補足
「MessageSourceType」に「ファイル接続」を指定すると、指定されたファイルの内容をそのままメール本文として書き出すことができます。その場合、「MessageSource」にはそのファイルへの接続マネージャ名を指定します。またこの場合、任意の文章を本文に付け加えることはできません。

なおこの設定の場合、送信メールの文字コードは「UTF-8」であるため、Shift-JIS形式であるテキストファイルに全角文字が含まれていると下図のように文字化けします。

補足
認証方式やポート番号など、SMTPについてはあまり細かい設定ができません。そのため、SMTPサーバーによってはこのタスクが使えない場合もあります。
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved