SQL Server Agent は次の機能を提供します。
サービス名 | 概要 |
警告 | エラーが発生したときに警告のメッセージを指定できます。管理者にメール、Net Send、ポケベルで通知することが可能です。 |
オペレータ | 警告やジョブで使用するメールアカウントや、Net Send アドレス、ポケベル用のアカウントを指定します。 |
ジョブ | スケジューリングしたタスクを実行することが可能です。バックアップの自動化などができます。 |
サービスアカウントは、ドメインのユーザーを使用するのが好ましいです。基本的にネットワーク上のほかのコンピュータとの接続が行われるため、ローカルアカウントだと不具合の原因となることがあります。また、デフォルトでは自動実行するように設定はされていません。
SQL Server で使用するメールは原則として Exchange クライアントでなければ使用できません。(ただし、裏技はあります。)
SQL Agent Mail
SQLAgentService アカウントのプロファイルで実行されるメールです。
SQL Mail
SQL Service アカウントのプロファイルで実行されるメールです。
ジョブは複数の処理を含めたバッチファイルのようなものです。スケジュールを設定することで、指定した日時や時間間隔で実行が可能です。主に定期的な自動バックアップや、レプリケーションなどに使用されます。 SQL Server 6.5 以前までは、一つの処理しか作成できませんでしたが、SQL Server 7.0 以降では複数の処理を作成することが可能であり、さらに、処理の分岐も可能です。 以下タスクが実行可能です(ほかにもあります)。
ジョブは sysjobs テーブルに格納され、sp_add_job ストアドプロシージャを使用することにより作成も可能です。 マルチサーバージョブ ネットワーク内の複数のサーバーに対してジョブを自動化することができます。 |
オペレータはジョブや、警告の中で使用することにより、メールや Net Send
コマンドで通知を行います。メールプロファイルは Exchange クライアントでないといけません。また、Outlook も必要です。 以下の手順でメール設定を行います。
オペレータの設定は、sysoperators テーブルに格納され、sp_add_operator ストアドプロシージャを使用することにより作成も可能です。 作成したオペレータは、右図のようにジョブで設定することで、ジョブが完了したときや、エラー終了したときに通知を行うことができます。ただし、一つのジョブに設定できるオペレータは一つだけです。また、ジョブ失敗時、成功時、完了時それぞれに設定することはできません。 |
エラーや警告が発生したときにオペレータに通知したり、ジョブを実行することができます。警告が動作するのは、イベントログに書き込まれたときです。SQL
Server では以下の場合にイベントに書き込みます。
RAISERROR の構文は以下のとおりです。
警告の設定は、sysalerts テーブルに格納され、sp_add_alert ストアドプロシージャを使用することにより作成も可能です。 エラー番号を予め調査する必要があるのが難点です。 また、ユーザー定義エラーを作成することも可能です。作成の方法は以下のとおりです。
ユーザー定義エラーは sysmessages テーブルに格納されます。 |