SQL Server エージェント
SQL Server エージェントは、SQL Server 2012 のジョブと呼ばれる管理タスクをスケジュールに従って実行する Microsoft Windows サービスです。
このトピックの内容
SQL Server エージェントの利点
SQL Server エージェントのコンポーネント
SQL Server エージェントのセキュリティ管理
SQL Server エージェントの利点
SQL Server エージェントは SQL Server を使用してジョブ情報を格納します。 ジョブには 1 つ以上のジョブ ステップが含まれます。 各ジョブ ステップには、データベースをバックアップするなど、独自のタスクがあります。
SQL Server エージェントでは、スケジュールに従って、特定のイベントに応答して、または必要に応じてジョブを実行できます。 たとえば、毎平日の業務終了後に会社のすべてのサーバーをバックアップする必要がある場合は、そのタスクを自動化できます。 月曜から金曜までの 22:00 以降にバックアップを実行するスケジュールを設定します。バックアップに問題が発生した場合、イベントが記録され、通知を受け取ることができます。
注 |
---|
SQL Server 2012 がインストールされるときに、サービスを自動起動することをユーザーが明示的に選択しない限り、SQL Server エージェント サービスは既定で無効になります。 |
[先頭に戻る]
SQL Server エージェントのコンポーネント
SQL Server エージェントでは、次のコンポーネントを使用して、実行するタスク、タスクを実行する時期、タスクの成功/失敗の報告方法を定義します。
ジョブ
ジョブとは、SQL Server エージェントで実行される特定の一連の処理のことです。 ジョブを使用して一度管理タスクを定義すると、そのタスクを何度も実行したり、それが正常に終了したかどうかを監視できます。 ジョブは 1 つのローカル サーバーで実行することも、複数のリモート サーバーで実行することもできます。
重要 |
---|
SQL Server フェールオーバー クラスターのインスタンスでフェールオーバー イベントが発生したときに実行されていた SQL Server エージェント ジョブは、別のフェールオーバー クラスター ノードにフェールオーバーしても再開されません。 また、Hyper-V ノードが一時停止したときに実行されていた SQL Server エージェント ジョブは、一時停止によって別のノードにフェールオーバーしても再開されません。 ジョブの開始後、フェールオーバー イベントが原因でそのジョブが完了しなかった場合は、開始したことがログに記録されますが、完了か失敗かを示すログ エントリは追加されません。 このようなシナリオの SQL Server エージェント ジョブは終了していないように見えます。 |
ジョブは、次のような方法で実行できます。
1 つ以上のスケジュールに従って実行する。
1 つ以上の警告に応答して実行する。
sp_start_job ストアド プロシージャの実行によって実行する。
ジョブ内の各処理をジョブ ステップといいます。 たとえば、ジョブ ステップは、Transact-SQL ステートメントの実行、SSIS パッケージの実行、Analysis Services サーバーへのコマンドの発行などで構成されます。 ジョブ ステップはジョブの一部として管理されます。
各ジョブ ステップは、特定のセキュリティ コンテキストで実行されます。 Transact-SQL を使用するジョブ ステップでは、EXECUTE AS ステートメントを使用して、ジョブ ステップにセキュリティ コンテキストを設定します。 その他のジョブ ステップでは、プロキシ アカウントを使用して、ジョブ ステップにセキュリティ コンテキストを設定します。
スケジュール
スケジュールでは、ジョブを実行する時期を指定します。 複数のジョブを同じスケジュールで実行したり、1 つのジョブに複数のスケジュールを割り当てることができます。 スケジュールでは、ジョブを実行する時期について次の条件を定義できます。
SQL Server エージェントが開始されるたびに、ジョブを実行する。
コンピューターの CPU 使用率がアイドルとして定義したレベルになったときに、ジョブを実行する。
指定した日時に 1 回だけジョブを実行する。
スケジュールに従って定期的にジョブを実行する。
詳細については、「スケジュールの作成とジョブへのアタッチ」を参照してください。
警告
警告とは、特定のイベントに対する自動応答のことです。 たとえば、ジョブが開始されたり、システム リソースが特定のしきい値に達したときなどがイベントと見なされます。 警告では、それが発生する条件を定義します。
警告は、次のいずれかの条件に対して生成できます。
SQL Server のイベント
SQL Server のパフォーマンス状態
SQL Server エージェントが実行されているコンピューターで発生した Microsoft Windows Management Instrumentation (WMI) イベント
警告では、次のアクションを実行できます。
1 人または複数のオペレーターへの通知
ジョブの実行
詳細については、「警告」を参照してください。
演算子
オペレーターは、SQL Server の 1 つの以上のインスタンスについて、そのメンテナンスを担当する管理責任者の連絡先情報を定義します。 一部の企業では、オペレーターの責任は 1 人に割り当てられます。 サーバーを複数台使用している企業では、多数の担当者がオペレーターの責任を共有します。 オペレーターにはセキュリティ情報を指定せず、セキュリティ プリンシパルを定義しません。
次の方法で、SQL Server からオペレーターに警告を通知できます。
電子メール
電子メール経由のポケットベル
net send
注 |
---|
net send を使用して通知を送信するには、SQL Server エージェントが置かれているコンピューターで Windows Messenger サービスを開始する必要があります。 |
重要 |
---|
今後のバージョンの SQL Server では、SQL Server エージェントからポケットベル オプションと net send オプションが削除される予定です。 新しい開発作業では、これらの機能の使用を避け、現在これらの機能を使用しているアプリケーションは修正するようにしてください。 |
電子メールまたはポケットベルを使用してオペレーターに通知を送信するには、データベース メールを使用するように SQL Server エージェントを構成する必要があります。 詳細については、「データベース メール」を参照してください。
オペレーターは、個人のグループを表す別名として定義できます。 その場合、その別名のすべてのメンバーが同時に通知を受け取ることになります。 詳細については、「演算子」を参照してください。
[先頭に戻る]
SQL Server エージェントのセキュリティ管理
SQL Server エージェントでは msdb データベースの固定データベース ロールである SQLAgentUserRole、SQLAgentReaderRole、SQLAgentOperatorRole を使用して、sysadmin 固定サーバー ロールのメンバーではないユーザーの SQL Server エージェントへのアクセスを制御します。 これらの固定データベース ロールに加え、サブシステムとプロキシを使用することで、タスクの実行に最低限必要な権限で各ジョブ ステップを実行できるようになります。
ロール
msdb の SQLAgentUserRole、SQLAgentReaderRole、SQLAgentOperatorRole の各固定データベース ロールのメンバーと sysadmin 固定サーバー ロールのメンバーは、SQL Server エージェントにアクセスできます。 どのロールのメンバーでもないユーザーは、SQL Server エージェントを使用できません。 SQL Server エージェントで使用されるロールの詳細については、「SQL Server エージェントのセキュリティの実装」を参照しくてください。
サブシステム
サブシステムは事前に定義されたオブジェクトで、任意のジョブ ステップで使用できる機能を表します。 各プロキシは 1 つ以上のサブシステムにアクセスできます。 サブシステムはプロキシで使用できる機能へのアクセスを制限することによりセキュリティを提供します。 Transact-SQL ジョブ ステップ以外の各ジョブ ステップは、プロキシのコンテキストで実行されます。 Transact-SQL ジョブ ステップでは、EXECUTE AS コマンドを使用してセキュリティ コンテキストが設定されます。
SQL Server では、次の表に示すサブシステムを定義しています。
サブシステム名 |
説明 |
||
---|---|---|---|
Microsoft ActiveX スクリプト |
ActiveX スクリプティング ジョブ ステップを実行します。
|
||
オペレーティング システム (CmdExec) |
実行可能なプログラムを実行します。 |
||
PowerShell |
PowerShell スクリプティング ジョブ ステップを実行します。 |
||
レプリケーション ディストリビューター |
レプリケーション ディストリビューション エージェントをアクティブにするジョブ ステップを実行します。 |
||
レプリケーション マージ |
レプリケーション マージ エージェントをアクティブにするジョブ ステップを実行します。 |
||
レプリケーション キュー リーダー |
レプリケーション キュー リーダー エージェントをアクティブにするジョブ ステップを実行します。 |
||
レプリケーション スナップショット |
レプリケーション スナップショット エージェントをアクティブにするジョブ ステップを実行します。 |
||
レプリケーション トランザクション ログ リーダー |
レプリケーション ログ リーダー エージェントをアクティブにするジョブ ステップを実行します。 |
||
Analysis Services コマンド |
Analysis Services コマンドを実行します。 |
||
Analysis Services クエリ |
Analysis Services クエリを実行します。 |
||
SSIS パッケージ実行 |
SSIS パッケージを実行します。 |
注 |
---|
Transact-SQL ジョブ ステップではプロキシを使用しないので、Transact-SQL ジョブ ステップ用の SQL Server エージェント サブシステムはありません。 |
本来はエージェント プロキシに対するセキュリティ プリンシパルにジョブ ステップのタスクを実行する権限があるような場合でも、SQL Server エージェントのサブシステム制約が強制的に適用されます。 たとえば、sysadmin 固定サーバー ロールのメンバーであるユーザーのプロキシが SSIS サブシステムにアクセスできなければ、そのユーザーが SSIS パッケージを実行できる場合でも、そのプロキシは SSIS ジョブ ステップを実行できません。
プロキシ
SQL Server エージェントは、プロキシを使用してセキュリティ コンテキストを管理します。 プロキシは、複数のジョブ ステップで使用できます。 固定サーバー ロール sysadmin のメンバーは、プロキシを作成できます。
各プロキシは、セキュリティ資格情報に対応しています。 各プロキシは、一連のサブシステムや一連のログインに関連付けることができます。 プロキシは、そのプロキシに関連付けられているサブシステムを使用するジョブ ステップにのみ使用できます。 特定のプロキシを使用するジョブ ステップを作成するには、ジョブの所有者がそのプロキシに関連付けられているログインを使用しているか、プロキシへ制限なしにアクセスできるロールのメンバーである必要があります。 固定サーバー ロール sysadmin のメンバーは、プロキシに制限なしにアクセスできます。 SQLAgentUserRole、SQLAgentReaderRole、または SQLAgentOperatorRole のメンバーは、特定のアクセスが許可されているプロキシしか使用できません。 これらの SQL Server エージェント固定データベース ロールのメンバーであるユーザーが特定のプロキシを使用するジョブ ステップを作成するには、ユーザーごとにこれらの特定のプロキシへのアクセスが許可されている必要があります。
関連タスク
SQL Server 管理を自動化するように SQL Server エージェントを構成するには、次の手順に従ってください。
定期的に発生する管理タスクまたはサーバー イベントを確定し、それらをプログラムによって管理できるかどうかも確定します。 手順の順序が予測可能で、特定の時刻または特定のイベントに対する応答として行われるタスクは、自動化に適しています。
SQL Server Management Studio、Transact-SQL スクリプト、または SQL Server 管理オブジェクト (SMO) を使用して、ジョブ、スケジュール、警告、およびオペレーターから構成されるセットを定義します。 詳細については、「ジョブの作成」を参照してください。
定義した SQL Server エージェント ジョブを実行します。
注 |
---|
SQL Server の既定のインスタンスの場合、SQL Server サービスの名前は SQLSERVERAGENT です。 名前付きインスタンスの場合、SQL Server エージェント サービスの名前は SQLAgent$instancename です。 |
複数の SQL Server インスタンスを実行している場合、すべてのインスタンスに共通なタスクをマルチサーバー管理を使用して自動化できます。 詳細については、「エンタープライズ全体の管理の自動化」を参照してください。
SQL Server エージェントに関連したタスクを次に示します。
説明 |
トピック |
SQL Server エージェントを構成する方法について説明します。 |
|
SQL Server エージェント サービスを開始、停止、および一時停止する方法について説明します。 |
|
SQL Server エージェント サービスのアカウントを指定する際の考慮事項について説明します。 |
|
SQL Server エージェントのエラー ログを使用する方法について説明します。 |
|
パフォーマンス オブジェクトを使用する方法について説明します。 |
|
メンテナンス プラン ウィザードについて説明します。メンテナンス プラン ウィザードは、SQL Server のインスタンスを自動管理するために、ジョブ、警告、およびオペレーターを作成するのに役立つユーティリティです。 |
|
SQL Server エージェントを使用して管理タスクを自動化する方法について説明します。 |
[先頭に戻る]