SQL Server Integration Services でメールの送信タスクの動的な件名またはメッセージを作成する

この記事では、プロパティ式を作成して、実行時に SQL Server Integration Services (SSIS) オブジェクトのプロパティを更新する方法について説明します。

元の製品バージョン: SQL Server
元の KB 番号: 906547

概要

SSIS パッケージは、SQL Server Business Intelligence Development Studio を使用して作成できます。 このパッケージを作成するときに、SSIS パッケージのプロパティの式を作成して更新したり、実行時にプロパティを設定したりできます。 たとえば、SSIS パッケージにメール送信タスクが含まれている場合は、Subject プロパティと プロパティの式を MessageSource 作成できます。 Subject プロパティ式を使用すると、電子メール メッセージの件名を動的に更新できます。 プロパティ式を MessageSource 使用すると、行数変換によって設定される変数など、電子メール メッセージ内の変数を動的に更新できます。

この記事では、メールの送信タスクの動的な件名またはメッセージを作成する方法について説明します。

詳細

メール送信タスクの Subject プロパティのサンプル プロパティ式を次に示します。

"Package>>> " + @[System::PackageName] +" was executed at>>> " + (DT_WSTR, 40) @[System::StartTime] + " by user>>> "
+ @[System::UserName] + " on Machine>>> " + @[System::MachineName]

このサンプル プロパティ式を使用すると、電子メール メッセージの件名が動的に更新されます。 件名には、次の情報が含まれます。

  • テキスト情報 この例では、電子メール メッセージの件名にテキスト情報が Package>>> 含まれています。
  • システム変数
    電子メール メッセージには、次のシステム変数が含まれています。
    • PackageName
      パッケージ名。
    • StartTime
      パッケージが実行された時刻。
    • UserName
      パッケージを実行したユーザー。
    • MachineName
      パッケージが実行されたコンピューターの名前。

また、ユーザー定義変数など、より多くの情報を式に含めることもできます。 たとえば、Data Flow タスクには、メール送信タスクの前に行数変換を含めることができます。 (行数変換は、行のカウントに使用されます)。行数変換では、 @myrowcountという名前のユーザー定義変数が設定されます。 この変数は、カウント情報をデータ フローに格納します。

行数が特定の値より小さい場合にのみ電子メール メッセージを送信するように指定するには、優先順位制約を使用して制御フローを変更します。 これを行うには、次の手順を実行します。

  1. SQL Server Business Intelligence Development Studio で、[タスクのData Flow] を右クリックし、[優先順位制約の追加] をクリックします。

  2. 作成した優先順位制約をダブルクリックします。

  3. [優先順位制約エディター] ダイアログ ボックスで、[評価操作] の [式] と [制約] をクリックします。

  4. [ ] ボックスに、次の式を入力します。 @myrowcount < 2

  5. [優先順位制約エディター] ダイアログ ボックスで、[OK] をクリックします

データ フローで処理される行が 2 行未満の場合は、電子メール メッセージが送信されます。

さらに、エラー ハンドラーの一部として [メールの送信] タスクを使用できます。 たとえば、SSIS パッケージが実行されない場合に、管理者に電子メール メッセージを送信できます。 これを行うには、パッケージの OnError イベント ハンドラーを作成し、イベント ハンドラーにメール送信タスクを追加します。 関連するシステム変数から、パッケージの実行時間、コンテナーの開始時刻、またはイベント ハンドラーの開始時刻をキャプチャするサブジェクト プロパティ式を作成します。 たとえば、次のような式を作成します。

"Error in the task: " + @[System::SourceName] + "with the ID: " + @[System::SourceID]
+ " has failed at: " + (DT_WSTR, 20) @[System::ContainerStartTime] + "."

このサンプル式では、次のシステム変数を使用します。

  • StartTime: パッケージが実行された時刻。
  • ContainerStartTime: コンテナーが開始された時刻。
  • EventHandlerStartTime: イベント ハンドラーが開始した時刻。

関連情報

詳細については、オンライン ブックの次のトピックSQL Server参照してください。

  • パッケージでのプロパティ式の使用
  • 方法: プロパティ式を作成する
  • Advanced Integration Services 式
  • 優先順位制約
  • タスクとコンテナーに優先順位制約を設定する
  • Integration Services イベント ハンドラー