SQL Server Agent


Summary

SQL Server Agent は次の機能を提供します。

サービス名 概要
警告 エラーが発生したときに警告のメッセージを指定できます。管理者にメール、Net Send、ポケベルで通知することが可能です。
オペレータ 警告やジョブで使用するメールアカウントや、Net Send アドレス、ポケベル用のアカウントを指定します。
ジョブ スケジューリングしたタスクを実行することが可能です。バックアップの自動化などができます。

サービスアカウントは、ドメインのユーザーを使用するのが好ましいです。基本的にネットワーク上のほかのコンピュータとの接続が行われるため、ローカルアカウントだと不具合の原因となることがあります。また、デフォルトでは自動実行するように設定はされていません。

 

Mail

SQL Server で使用するメールは原則として Exchange クライアントでなければ使用できません。(ただし、裏技はあります。)

SQL Agent Mail

SQLAgentService アカウントのプロファイルで実行されるメールです。

SQL Mail

SQL Service アカウントのプロファイルで実行されるメールです。

 

Job

ジョブは複数の処理を含めたバッチファイルのようなものです。スケジュールを設定することで、指定した日時や時間間隔で実行が可能です。主に定期的な自動バックアップや、レプリケーションなどに使用されます。

SQL Server 6.5 以前までは、一つの処理しか作成できませんでしたが、SQL Server 7.0 以降では複数の処理を作成することが可能であり、さらに、処理の分岐も可能です。

以下タスクが実行可能です(ほかにもあります)。

  • Transact-SQL
  • ActiveX スクリプト(Java Script、VB Script)
  • オペレーティングシステムコマンド(cmd.exe)

ジョブは sysjobs テーブルに格納され、sp_add_job ストアドプロシージャを使用することにより作成も可能です。

マルチサーバージョブ

ネットワーク内の複数のサーバーに対してジョブを自動化することができます。

 

Operator

オペレータはジョブや、警告の中で使用することにより、メールや Net Send コマンドで通知を行います。メールプロファイルは Exchange クライアントでないといけません。また、Outlook も必要です。

以下の手順でメール設定を行います。

  1. SQLAgentService アカウントで SQL Server にログインします。
  2. メールボックスの設定を行います。
  3. ログオフします。
  4. 管理者でログオンし Enterprise Manager を使用してオペレータの作成を行います。

オペレータの設定は、sysoperators テーブルに格納され、sp_add_operator ストアドプロシージャを使用することにより作成も可能です。

作成したオペレータは、右図のようにジョブで設定することで、ジョブが完了したときや、エラー終了したときに通知を行うことができます。ただし、一つのジョブに設定できるオペレータは一つだけです。また、ジョブ失敗時、成功時、完了時それぞれに設定することはできません。

 

Alert

エラーや警告が発生したときにオペレータに通知したり、ジョブを実行することができます。警告が動作するのは、イベントログに書き込まれたときです。SQL Server では以下の場合にイベントに書き込みます。
  • 重要度レベルが 19 〜 25 までのエラーが発生したとき。
  • sp_addmessage または sp_altermessage でイベントに書き込むように指定したとき。
  • RAISERROR WITH LOG ステートメントを実行したとき。
  • xp_logevent ストアドプロシージャを実行したとき。

RAISERROR の構文は以下のとおりです。

RAISERROR(エラー番号, レベル, 状態)

警告の設定は、sysalerts テーブルに格納され、sp_add_alert ストアドプロシージャを使用することにより作成も可能です。

エラー番号を予め調査する必要があるのが難点です。

また、ユーザー定義エラーを作成することも可能です。作成の方法は以下のとおりです。

  1. [ツール] メニューから [SQL Server メッセージの管理] を選択する。
  2. [メッセージ] タブの [新規] ボタンを押す。
  3. [エラー番号] 、[レベル] 、[メッセージ] 、[言語] を入力する。
    * ユーザー定義エラーは 50000 以降を使用できます。
    * [言語] は予め English を登録しないとエラーになります。
  4. [Windows イベントログに書き込む] にチェックをつける。
    * 警告の機能を使用しないときはつけなくてもいいです。
  5. [OK] をしてダイアログを閉じる。

ユーザー定義エラーは sysmessages テーブルに格納されます。