web-dev-qa-db-ja.com

クエリ結果に基づいてメールを送信する

毎月最初に、時間を提出していない部門ごとに電子メールを送信するように要求します。メールアドレス、メールの件名、メール本文のリストを生成するクエリがあります。ただし、データフローのSSISツールボックスには、制御フローにあるような[メール送信タスク]オプションはありません。

クエリ結果に基づいてメールを送信するにはどうすればよいですか?

2
DForck42

@sp_BlitzErikが示唆するように、これはSQLで直接行うほうが簡単です。何らかの理由でSSISパッケージの一部にする必要がある場合は、SQLスクリプトを記述してジョブを実行し、それを「SQLの実行」タスクとしてパッケージに入れます。そして、はい、これは実際には、カーソルを使用することが実際に意味をなすまれなケースの1つです。

ただし、何らかの理由でsp_send_dbmailを使用できない場合は、データフローではなく、SSISでこれを実行できます。

「SQL実行」タスクでリストを生成するクエリを実行し、結果セットをオブジェクトに配置します。クエリを変更して、結果セットが1つだけになるようにする必要がある場合があります。SET NOCOUNT ONなどを使用します。次に、オブジェクトに「Foreach」ループを実行して、さまざまな列の値を変数に入れます。 「Foreach」ループの中に「Send Email」タスクを配置します。必要なすべての値を式(タスクエディターウィンドウの最後のタブ)として設定します。各式は、ループによって入力される適切な変数です。

3
RDFozz