2016-03-26 17 views
0

SQL Server 2012データベーステーブルのレコードが特定の条件を満たしていることを確認し、通知する必要があります。たとえば、trans_recordテーブル内のレコードが、「ステータス」列に「エラー」というエントリを持っているとします。SQL Server 2012で自動電子メールアラートを構成する方法

クエリは簡単です。SSISパッケージをセットアップして、適切な「where」句を使用してテーブルをクエリします。私は毎日午前7時にSSISパッケージを実行し、問題のあるレコードをフラットテキストファイルにエクスポートするSQL Agentジョブを使用してこれを追跡しました。

私が理解できる必要なのは、SSISパッケージによって実行されたクエリでレコードが見つかった場合にのみ電子メールを送信できる方法です。レコードが見つかった場合でも、SSISパッケージは常にファイルを作成するように見えます。

SQL Serverはアラートをサポートし、通知される演算子を定義していますが、クエリで有効なレコードが返された場合に通知を受ける方法がわかりません。

これをSQL Serverでどのように設定できますか?

おかげ

答えて

0

私が正しく理解していれば、あなたは、エラーのステータスを持つテーブル内のレコードがある場合にのみ、SSISによって電子メールで送信したいと思います。これが正しければ、SSISパッケージからこれを達成することができます。

あなたは電子メールをデータベースに照会し、送信したい場合は、次の2つのタスクと2つの接続が必要になります:

  1. SQLタスクの実行
  2. 電子メールの送信タスク
  3. データベース接続
  4. を電子メール接続

関連するデータベース接続の詳細と交換の詳細を設定する電子メール接続用。

タスクへの接続を追加するには、[Execute SQL to Send Email]タスクから[Precedence Constraint]を作成します。

Exec SQL create queryまたはストアドプロシージャを使用して、レコードが存在する場合、またはテーブル内のレコード数が望ましい場合はfalseまたはtrueを返します。

クエリの結果を変数に返します(SSIS変数、パッケージに追加する必要があります)。優先度制約の設定を変更して式の評価を追加し、変数を使用します。つまり、変数を@recordPresentに設定すると、@ recordPresent == true(返される値がfalseまたはtrueの場合)または@recordPresent> 0(変数にレコード数が含まれている場合)。

式が真と評価され、制約のタイプがrequiered、すなわち成功、完了、失敗の場合、制御はこの場合は電子メールの次のタスクに渡されます。電子メールタスクの送信が正しく設定されている場合(from、to、件名、本文、交換接続文字列は正しい)、電子メールはテーブルにレコードがある場合にのみ送信されます。

こちらがお役に立てば幸いです。

+0

ありがとう、Dariusz。これはうまくいった! – user3151788

+0

心配しないで、私は助けてくれてうれしいです。 –

関連する問題