SQL Server エージェントSQL Server Agent

SQL ServerSQL Server エージェントは、 ジョブ SQL Server 2014SQL Server 2014と呼ばれる管理タスクをスケジュールに従って実行する Microsoft Windows サービスです。Agent is a Microsoft Windows service that executes scheduled administrative tasks, which are called jobs in SQL Server 2014SQL Server 2014.

このトピックの内容In This Topic

SQL Server エージェントの利点Benefits of SQL Server Agent

SQL ServerSQL Server エージェントは SQL ServerSQL Server を使用してジョブ情報を格納します。Agent uses SQL ServerSQL Server to store job information. ジョブには 1 つ以上のジョブ ステップが含まれます。Jobs contain one or more job steps. 各ジョブ ステップには、データベースをバックアップするなど、独自のタスクがあります。Each step contains its own task, for example, backing up a database.

SQL ServerSQL Server エージェントでは、スケジュールに従って、特定のイベントに応答して、または必要に応じてジョブを実行できます。Agent can run a job on a schedule, in response to a specific event, or on demand. たとえば、毎平日の業務終了後に会社のすべてのサーバーをバックアップする必要がある場合は、そのタスクを自動化できます。For example, if you want to back up all the company servers every weekday after hours, you can automate this task. 月曜から金曜までの 22:00 以降にバックアップを実行するスケジュールを設定します。バックアップに問題が発生した場合、イベントが記録され、通知を受け取ることができます。Schedule the backup to run after 22:00 Monday through Friday; if the backup encounters a problem, SQL Server Agent can record the event and notify you.

注意

SQL ServerSQL Server がインストールされるときに、サービスを自動起動することをユーザーが明示的に選択しない限り、 SQL Server 2014SQL Server 2014 エージェント サービスは既定で無効になります。By default, the SQL ServerSQL Server Agent service is disabled when SQL Server 2014SQL Server 2014 is installed unless the user explicitly chooses to autostart the service.

SQL Server エージェント コンポーネントSQL Server Agent Components

SQL ServerSQL Server エージェントでは、次のコンポーネントを使用して、実行するタスク、タスクを実行する時期、タスクの成功/失敗の報告方法を定義します。Agent uses the following components to define the tasks to be performed, when to perform the tasks, and how to report the success or failure of the tasks.

ジョブJobs

ジョブ とは、 SQL ServerSQL Server エージェントで実行される特定の一連の処理のことです。A job is a specified series of actions that SQL ServerSQL Server Agent performs. ジョブを使用して一度管理タスクを定義すると、そのタスクを何度も実行したり、それが正常に終了したかどうかを監視できます。Use jobs to define an administrative task that can be run one or more times and monitored for success or failure. ジョブは 1 つのローカル サーバーで実行することも、複数のリモート サーバーで実行することもできます。A job can run on one local server or on multiple remote servers.

重要

SQL ServerSQL Server フェールオーバー クラスターのインスタンスでフェールオーバー イベントが発生したときに実行されていた SQL ServerSQL Server エージェント ジョブは、別のフェールオーバー クラスター ノードにフェールオーバーしても再開されません。Agent jobs that are running at the time of a failover event on a SQL ServerSQL Server failover cluster instance do not resume after failover to another failover cluster node. SQL ServerSQL Server エージェント ジョブが Hyper-V ノードの一時停止時に実行されていた場合、一時停止によって別のノードにフェールオーバーしても再開されません。Agent jobs that are running at the time a Hyper-V node is paused do not resume if the pause causes a failover to another node. ジョブの開始後、フェールオーバー イベントが原因でそのジョブが完了しなかった場合は、開始したことがログに記録されますが、完了か失敗かを示すログ エントリは追加されません。Jobs that begin but fail to complete because of a failover event are logged as started, but do not show additional log entries for completion or failure. SQL ServerSQL Server エージェント ジョブは終了していないように見えます。Agent jobs in these scenarios appear to have never ended.

ジョブは、次のような方法で実行できます。You can run jobs in several ways:

  • 1 つ以上のスケジュールに従って実行する。According to one or more schedules.

  • 1 つ以上の警告に応答して実行する。In response to one or more alerts.

  • sp_start_job ストアド プロシージャの実行によって実行する。By executing the sp_start_job stored procedure.

ジョブ内の各処理を ジョブ ステップといいます。Each action in a job is a job step. たとえば、ジョブ ステップは、 Transact-SQLTransact-SQL ステートメントの実行、 SSISSSIS パッケージの実行、Analysis Services サーバーへのコマンドの発行などで構成されます。For example, a job step might consist of running a Transact-SQLTransact-SQL statement, executing an SSISSSIS package, or issuing a command to an Analysis Services server. ジョブ ステップはジョブの一部として管理されます。Job steps are managed as part of a job.

各ジョブ ステップは、特定のセキュリティ コンテキストで実行されます。Each job step runs in a specific security context. Transact-SQLTransact-SQLを使用するジョブ ステップでは、EXECUTE AS ステートメントを使用して、ジョブ ステップにセキュリティ コンテキストを設定します。For job steps that use Transact-SQLTransact-SQL, use the EXECUTE AS statement to set the security context for the job step. その他のジョブ ステップでは、プロキシ アカウントを使用して、ジョブ ステップにセキュリティ コンテキストを設定します。For other types of job steps, use a proxy account to set the security context for the job step.

スケジュールSchedules

スケジュール では、ジョブを実行する時期を指定します。A schedule specifies when a job runs. 複数のジョブを同じスケジュールで実行したり、1 つのジョブに複数のスケジュールを割り当てることができます。More than one job can run on the same schedule, and more than one schedule can apply to the same job. スケジュールでは、ジョブを実行する時期について次の条件を定義できます。A schedule can define the following conditions for the time when a job runs:

  • SQL ServerSQL Server エージェントが開始されるたびに、ジョブを実行する。Whenever SQL ServerSQL Server Agent starts.

  • コンピューターの CPU 使用率がアイドルとして定義したレベルになったときに、ジョブを実行する。Whenever CPU utilization of the computer is at a level you have defined as idle.

  • 指定した日時に 1 回だけジョブを実行する。One time, at a specific date and time.

  • スケジュールに従って定期的にジョブを実行する。On a recurring schedule.

詳細については、「 スケジュールの作成とジョブへのアタッチ」を参照してください。For more information, see Create and Attach Schedules to Jobs.

警告Alerts

警告 とは、特定のイベントに対する自動応答のことです。An alert is an automatic response to a specific event. たとえば、ジョブが開始されたり、システム リソースが特定のしきい値に達したときなどがイベントと見なされます。For example, an event can be a job that starts or system resources that reach a specific threshold. 警告では、それが発生する条件を定義します。You define the conditions under which an alert occurs.

警告は、次のいずれかの条件に対して生成できます。An alert can respond to one of the following conditions:

  • SQL ServerSQL Server のイベントevents

  • SQL ServerSQL Server のパフォーマンス状態performance conditions

  • SQL Server エージェントが実行されているコンピューターで発生した Microsoft Windows Management Instrumentation (WMI) イベントMicrosoft Windows Management Instrumentation (WMI) events on the computer where SQL Server Agent is running

警告では、次のアクションを実行できます。An alert can perform the following actions:

  • 1 人または複数のオペレーターへの通知Notify one or more operators

  • ジョブの実行Run a job

詳細については、「 警告」を参照してください。For more information, see Alerts.

オペレーターOperators

オペレーター は、 SQL ServerSQL Serverの 1 つの以上のインスタンスについて、そのメンテナンスを担当する管理責任者の連絡先情報を定義します。An operator defines contact information for an individual responsible for the maintenance of one or more instances of SQL ServerSQL Server. 一部の企業では、オペレーターの責任は 1 人に割り当てられます。In some enterprises, operator responsibilities are assigned to one individual. サーバーを複数台使用している企業では、多数の担当者がオペレーターの責任を共有します。In enterprises with multiple servers, many individuals can share operator responsibilities. オペレーターにはセキュリティ情報を指定せず、セキュリティ プリンシパルを定義しません。An operator does not contain security information, and does not define a security principal.

SQL ServerSQL Server からオペレーターに警告を通知できます。can notify operators of alerts through one or more of the following:

  • 電子メールE-mail

  • 電子メール経由のポケットベルPager (through e-mail)

  • net sendnet send

注意

net sendを使用して通知を送信するには、 SQL ServerSQL Server エージェントが置かれているコンピューターで Windows Messenger サービスを開始する必要があります。To send notifications by using net send, the Windows Messenger service must be started on the computer where SQL ServerSQL Server Agent resides.

重要

SQL ServerSQL Server の今後のバージョンでは、 SQL ServerSQL Server エージェントからポケットベル オプションと net send オプションが削除される予定です。The Pager and net send options will be removed from SQL ServerSQL Server Agent in a future version of SQL ServerSQL Server. 新しい開発作業では、これらの機能の使用を避け、現在これらの機能を使用しているアプリケーションは修正するようにしてください。Avoid using these features in new development work, and plan to modify applications that currently use these features.

電子メールまたはポケットベルを使用してオペレーターに通知を送信するには、データベース メールを使用するように SQL ServerSQL Server エージェントを構成する必要があります。To send notifications to operators by using e-mail or pagers, you must configure SQL ServerSQL Server Agent to use Database Mail. 詳細については、「 Database Mail」を参照してください。For more information, see Database Mail.

オペレーターは、個人のグループを表す別名として定義できます。You can define an operator as the alias for a group of individuals. その場合、その別名のすべてのメンバーが同時に通知を受け取ることになります。In this way, all members of that alias are notified at the same time. 詳細については、「 オペレーター」を参照してください。For more information, see Operators.

SQL Server エージェントの管理のセキュリティSecurity for SQL Server Agent Administration

SQL ServerSQL Server エージェントを使用して、 SQLAgentUserRoleSQLAgentReaderRole、およびSQLAgentOperatorRole固定データベース ロールで、 msdbデータベースへのアクセスを制御するSQL ServerSQL Serverメンバーではないユーザー エージェントのsysadmin固定サーバー ロール。Agent uses the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles in the msdb database to control access to SQL ServerSQL Server Agent for users who are not members of the sysadmin fixed server role. これらの固定データベース ロールに加え、サブシステムとプロキシを使用することで、タスクの実行に最低限必要な権限で各ジョブ ステップを実行できるようになります。In addition to these fixed database roles, subsystems and proxies help database administrators ensure that each job step runs with the minimum permissions required to perform its task.

ロールRoles

メンバー、 SQLAgentUserRoleSQLAgentReaderRole、およびSQLAgentOperatorRole固定データベース ロールでmsdbとメンバー、sysadmin固定サーバー ロールへのアクセスがあるSQL ServerSQL Serverエージェント。Members of the SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles in msdb, and members of the sysadmin fixed server role have access to SQL ServerSQL Server Agent. どのロールのメンバーでもないユーザーは、 SQL ServerSQL Server エージェントを使用できません。A user that does not belong to any of these roles cannot use SQL ServerSQL Server Agent. SQL ServerSQL Server エージェントによって使用されるロールの詳細については、「 SQL Server エージェントのセキュリティの実装」を参照してください。For more information on the roles used by SQL ServerSQL Server Agent, see Implement SQL Server Agent Security.

サブシステムSubsystems

サブシステムは事前に定義されたオブジェクトで、任意のジョブ ステップで使用できる機能を表します。A subsystem is a predefined object that represents functionality that is available to a job step. 各プロキシは 1 つ以上のサブシステムにアクセスできます。Each proxy has access to one or more subsystems. サブシステムはプロキシで使用できる機能へのアクセスを制限することによりセキュリティを提供します。Subsystems provide security because they delimit access to the functionality that is available to a proxy. Transact-SQLTransact-SQL ジョブ ステップ以外の各ジョブ ステップは、プロキシのコンテキストで実行されます。Each job step runs in the context of a proxy, except for Transact-SQLTransact-SQL job steps. Transact-SQLTransact-SQL ジョブ ステップでは、EXECUTE AS コマンドを使用してセキュリティ コンテキストが設定されます。job steps use the EXECUTE AS command to set the security context.

SQL ServerSQL Server では、次の表に示すサブシステムを定義しています。defines the subsystems listed in the following table:

サブシステム名Subsystem name 説明Description
Microsoft ActiveX スクリプトMicrosoft ActiveX Script ActiveX スクリプティング ジョブ ステップを実行します。Run an ActiveX scripting job step.

** 重要な ** ActiveX スクリプティング サブシステムはから削除するSQL ServerSQL Serverの将来のバージョンのエージェントMicrosoftMicrosoftSQL ServerSQL Serverです。** Important ** The ActiveX Scripting subsystem will be removed from SQL ServerSQL Server Agent in a future version of MicrosoftMicrosoftSQL ServerSQL Server. 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
オペレーティング システム (CmdExec)Operating System (CmdExec) 実行可能なプログラムを実行します。Run an executable program.
PowerShellPowerShell PowerShell スクリプティング ジョブ ステップを実行します。Run a PowerShell scripting job step.
レプリケーション ディストリビューターReplication Distributor レプリケーション ディストリビューション エージェントをアクティブにするジョブ ステップを実行します。Run a job step that activates the replication Distribution Agent.
レプリケーション マージReplication Merge レプリケーション マージ エージェントをアクティブにするジョブ ステップを実行します。Run a job step that activates the replication Merge Agent.
レプリケーション キュー リーダーReplication Queue Reader レプリケーション キュー リーダー エージェントをアクティブにするジョブ ステップを実行します。Run a job step that activates the replication Queue Reader Agent.
レプリケーション スナップショットReplication Snapshot レプリケーション スナップショット エージェントをアクティブにするジョブ ステップを実行します。Run a job step that activates the replication Snapshot Agent.
レプリケーション トランザクション ログ リーダーReplication Transaction Log Reader レプリケーション ログ リーダー エージェントをアクティブにするジョブ ステップを実行します。Run a job step that activates the replication Log Reader Agent.
Analysis ServicesAnalysis Services コマンドCommand Analysis ServicesAnalysis Services コマンドを実行します。Run an Analysis ServicesAnalysis Services command.
Analysis ServicesAnalysis Services QueryQuery Analysis ServicesAnalysis Services クエリを実行します。Run an Analysis ServicesAnalysis Services query.
SSISSSIS パッケージ実行package execution SSISSSIS パッケージを実行します。Run an SSISSSIS package.

注意

Transact-SQLTransact-SQL ジョブ ステップではプロキシを使用しないので、 SQL ServerSQL Server ジョブ ステップ用の Transact-SQLTransact-SQL エージェント サブシステムはありません。Because Transact-SQLTransact-SQL job steps do not use proxies, there is no SQL ServerSQL Server Agent subsystem for Transact-SQLTransact-SQL job steps.

SQL ServerSQL Server エージェントのサブシステム制約が強制的に適用されます。Agent enforces subsystem restrictions even when the security principal for the proxy would normally have permission to run the task in the job step. たとえば、sysadmin 固定サーバー ロールのメンバーであるユーザーのプロキシが SSISSSIS サブシステムにアクセスできなければ、そのユーザーが SSISSSIS パッケージを実行できる場合でも、そのプロキシは SSISSSIS ジョブ ステップを実行できません。For example, a proxy for a user that is a member of the sysadmin fixed server role cannot run an SSISSSIS job step unless the proxy has access to the SSISSSIS subsystem, even though the user can run SSISSSIS packages.

プロキシProxies

SQL ServerSQL Server エージェントは、プロキシを使用してセキュリティ コンテキストを管理します。Agent uses proxies to manage security contexts. プロキシは、複数のジョブ ステップで使用できます。A proxy can be used in more than one job step. メンバー、sysadmin固定サーバー ロールは、プロキシを作成できます。Members of the sysadmin fixed server role can create proxies.

各プロキシには対応するセキュリティ資格情報が 1 つあります。Each proxy corresponds to a security credential. 各プロキシは、一連のサブシステムや一連のログインに関連付けることができます。Each proxy can be associated with a set of subsystems and a set of logins. プロキシは、そのプロキシに関連付けられているサブシステムを使用するジョブ ステップにのみ使用できます。The proxy can be used only for job steps that use a subsystem associated with the proxy. 特定のプロキシを使用するジョブ ステップを作成するには、ジョブの所有者がそのプロキシに関連付けられているログインを使用しているか、プロキシへ制限なしにアクセスできるロールのメンバーである必要があります。To create a job step that uses a specific proxy, the job owner must either use a login associated with that proxy or be a member of a role with unrestricted access to proxies. メンバー、sysadminプロキシに無制限のアクセスに固定サーバー ロール。Members of the sysadmin fixed server role have unrestricted access to proxies. SQLAgentUserRoleSQLAgentReaderRole、または SQLAgentOperatorRole のメンバーは、特定のアクセスが許可されているプロキシしか使用できません。Members of SQLAgentUserRole, SQLAgentReaderRole, or SQLAgentOperatorRole can only use proxies to which they have been granted specific access. これらの SQL ServerSQL Server エージェントの固定データベース ロールのメンバーであるユーザーが特定のプロキシを使用するジョブ ステップを作成するには、ユーザーごとにこれらの特定のプロキシへのアクセスが許可されている必要があります。Each user that is a member of any of these SQL ServerSQL Server Agent fixed database roles must be granted access to specific proxies so that the user can create job steps that use those proxies.

SQL ServerSQL Server 管理を自動化するように SQL ServerSQL Server エージェントを構成するには、次の手順に従ってください。Use the following steps to configure SQL ServerSQL Server Agent to automate SQL ServerSQL Server administration:

  1. 定期的に発生する管理タスクまたはサーバー イベントを確定し、それらをプログラムによって管理できるかどうかも確定します。Establish which administrative tasks or server events occur regularly and whether these tasks or events can be administered programmatically. 手順の順序が予測可能で、特定の時刻または特定のイベントに対する応答として行われるタスクは、自動化に適しています。A task is a good candidate for automation if it involves a predictable sequence of steps and occurs at a specific time or in response to a specific event.

  2. [SQL Server Management Studio]SQL Server Management StudioTransact-SQLTransact-SQL スクリプト、または SQL ServerSQL Server 管理オブジェクト (SMO) を使用して、ジョブ、スケジュール、警告、およびオペレーターから構成されるセットを定義します。Define a set of jobs, schedules, alerts, and operators by using [SQL Server Management Studio]SQL Server Management Studio, Transact-SQLTransact-SQL scripts, or SQL ServerSQL Server Management Objects (SMO). 詳細については、「 ジョブの作成」を参照してください。For more information, see Create Jobs.

  3. 定義した SQL ServerSQL Server エージェント ジョブを実行します。Run the SQL ServerSQL Server Agent jobs you have defined.

注意

SQL ServerSQL Serverの既定のインスタンスの場合、 SQL ServerSQL Server サービスの名前は SQLSERVERAGENT です。For the default instance of SQL ServerSQL Server, the SQL ServerSQL Server service is named SQLSERVERAGENT. 名前付きインスタンスの場合、 SQL ServerSQL Server エージェント サービスの名前は SQLAgent$instancenameです。For named instances, the SQL ServerSQL Server Agent service is named SQLAgent$instancename.

複数の SQL ServerSQL Serverインスタンスを実行している場合、すべてのインスタンスに共通なタスクをマルチサーバー管理を使用して自動化できます。If you are running multiple instances of SQL ServerSQL Server, you can use multiserver administration to automate tasks common across all instances. 詳細については、「 エンタープライズ全体の管理の自動化」を参照してください。For more information, see Automated Administration Across an Enterprise.

SQL ServerSQL Server エージェントに関連したタスクを次に示します。Use the following tasks to get started with SQL ServerSQL Server Agent:

[説明]Description トピックTopic
SQL Server エージェントを構成する方法について説明します。Describes how to configure SQL Server Agent. SQL Server エージェントの構成Configure SQL Server Agent
SQL Server エージェント サービスを開始、停止、および一時停止する方法について説明します。Describes how to start, stop, and pause the SQL Server Agent service. SQL Server エージェント サービスの開始、停止、または一時停止Start, Stop, or Pause the SQL Server Agent Service
SQL Server エージェント サービスのアカウントを指定する際の考慮事項について説明します。Describes considerations for specifying an account for the SQL Server Agent service. SQL Server エージェント サービスのアカウントの選択Select an Account for the SQL Server Agent Service
SQL Server エージェントのエラー ログを使用する方法について説明します。Describes how to use the SQL Server Agent error log. SQL Server エージェント エラー ログSQL Server Agent Error Log
パフォーマンス オブジェクトを使用する方法について説明します。Describes how to use performance objects. パフォーマンス オブジェクトの使用Use Performance Objects
メンテナンス プラン ウィザードについて説明します。メンテナンス プラン ウィザードは、SQL Server のインスタンスを自動管理するために、ジョブ、警告、およびオペレーターを作成するのに役立つユーティリティです。Describes the Maintenance Plan Wizard, which is a utility that you can use to help create jobs, alerts, and operators to automate administration of an instance of SQL Server. メンテナンス プラン ウィザードの使用Use the Maintenance Plan Wizard
SQL Server エージェントを使用して管理タスクを自動化する方法について説明します。Describes how to automate administrative tasks using SQL Server Agent. 管理タスクの自動化 (SQL Server エージェント)Automated Administration Tasks (SQL Server Agent)

関連項目See Also

セキュリティ構成Surface Area Configuration