ジョブ ステップの管理Manage Job Steps

適用対象: yesSQL Server yesAzure SQL Database (Managed Instance のみ) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

重要

Azure SQL Database Managed Instance では現在、すべてではありませんがほとんどの SQL Server エージェントの機能がサポートされています。On Azure SQL Database Managed Instance, most, but not all SQL Server Agent features are currently supported. 詳細については、「Azure SQL Database Managed Instance と SQL Server の T-SQL の相違点」を参照してください。See Azure SQL Database Managed Instance T-SQL differences from SQL Server for details.

ジョブ ステップは、ジョブがデータベースまたはサーバーで行う処理です。A job step is an action that the job takes on a database or a server. すべてのジョブには、最低 1 つのジョブ ステップを含める必要があります。Every job must have at least one job step. ジョブ ステップには次のような種類があります。Job steps can be:

  • 実行可能プログラムまたはオペレーティング システムのコマンド。Executable programs and operating system commands.

  • Transact-SQLTransact-SQL ステートメント。ストアド プロシージャと拡張ストアド プロシージャを含みます。statements, including stored procedures and extended stored procedures.

  • PowerShell スクリプト。PowerShell scripts.

  • MicrosoftMicrosoft ActiveX スクリプト。ActiveX scripts.

  • レプリケーション タスク。Replication tasks.

  • Analysis ServicesAnalysis Services タスク。tasks.

  • Integration ServicesIntegration Services パッケージ。packages.

各ジョブ ステップは特定のセキュリティ コンテキストで実行されます。Every job step runs in a specific security context. ジョブ ステップがプロキシを指定している場合、このジョブ ステップは指定されたプロキシの資格情報のセキュリティ コンテキストで実行されます。If the job step specifies a proxy, the job step runs in the security context of the credential for the proxy. ジョブ ステップがプロキシを指定していない場合、このジョブ ステップは SQL ServerSQL Server エージェント サービス アカウントのコンテキストで実行されます。If a job step does not specify a proxy, the job step runs in the context of the SQL ServerSQL Server Agent service account. プロキシを明示的に指定せずにジョブを作成できるのは、sysadmin 固定サーバー ロールのメンバーのみです。Only members of the sysadmin fixed server role can create jobs that do not explicitly specify a proxy.

ジョブ ステップは特定の MicrosoftMicrosoft Windows ユーザーのコンテキストで実行されるので、ユーザーには、ジョブ ステップの実行に必要なアクセス許可と構成が必要です。Because job steps run in the context of a specific MicrosoftMicrosoft Windows user, that user must have the permissions and configuration necessary for the job step to execute. たとえば、ドライブ文字または汎用名前付け規則 (UNC) パスを必要とするようなジョブを作成した場合、タスクのテスト時にはジョブ ステップを作成者の Windows ユーザー アカウントで実行していることがあります。For example, if you create a job that requires a drive letter or a Universal Naming Convention (UNC) path, the job steps may run under your Windows user account while testing the tasks. ところが、このジョブ ステップの Windows ユーザーにも、このジョブ ステップを実行するためのアクセス許可、ドライブ文字構成、指定ドライブへのアクセスが必要になります。However, the Windows user for the job step must also have the necessary permissions, drive letter configurations, or access to the required drive. そうでなければ、このジョブ ステップは失敗します。Otherwise, the job step fails. この問題を回避するには、各ジョブ ステップのプロキシに、ジョブ ステップで実行するタスクに対して必要なアクセス許可が設定されていることを確認してください。To prevent this problem, ensure that the proxy for each job step has the necessary permissions for the task that the job step performs. 詳細については、「 セキュリティと保護 (データベース エンジン)」を参照してください。For more information, see Security and Protection (Database Engine).

ジョブ ステップのログJob Step Logs

SQL ServerSQL Server エージェントは、オペレーティング システム ファイルまたは msdb データベースの sysjobstepslogs テーブルに、一部のジョブ ステップからの出力を書き込むことができます。Agent can write output from some job steps either to an operating system file or to the sysjobstepslogs table in the msdb database. 両方の出力先に出力を書き込めるジョブ ステップの種類は次のとおりです。The following job step types can write output to both destinations:

  • 実行可能プログラムまたはオペレーティング システムのコマンド。Executable programs and operating system commands.

  • Transact-SQLTransact-SQL ステートメントのいずれでもサポートされません。statements.

  • Analysis ServicesAnalysis Services タスク。tasks.

ジョブ ステップの出力をオペレーティング システム ファイルに書き込めるのは、sysadmin 固定サーバー ロールのメンバーであるユーザーが実行するジョブ ステップのみです。Only job steps that are executed by users who are members of the sysadmin fixed server role can write job step output to operating system files. ジョブ ステップを実行するユーザーが、msdb データベースの SQLAgentUserRole 固定データベース ロール、SQLAgentReaderRole 固定データベース ロール、または SQLAgentOperatorRole 固定データベース ロールのメンバーである場合、ジョブ ステップの出力は sysjobstepslogs テーブルにのみ書き込むことができます。If job steps are executed by users who are members of the SQLAgentUserRole, SQLAgentReaderRole, or the SQLAgentOperatorRole fixed database roles in the msdb database, then the output from these job steps can be written only to the sysjobstepslogs table.

ジョブ ステップのログは、ジョブまたはジョブ ステップが削除されると自動的に削除されます。Job step logs are automatically deleted when jobs or job steps are deleted.

注意

レプリケーション タスクと Integration ServicesIntegration Services パッケージのジョブ ステップのログ記録は、それぞれのサブシステムによって処理されます。Replication task and Integration ServicesIntegration Services package job step logging is handled by their respective subsystem. これらのタイプのジョブ ステップについては、 SQL ServerSQL Server エージェントを使用してジョブ ステップのログ記録を構成することはできません。You cannot use SQL ServerSQL Server Agent to configure jog step logging for these types of job steps.

ジョブ ステップとしての実行可能プログラムとオペレーティング システム コマンドExecutable Programs and Operating-System Commands As Job Steps

実行可能プログラムとオペレーティング システム コマンドは、ジョブ ステップとして使用できます。Executable programs and operating-system commands can be used as job steps. これらのファイルの拡張子は、.bat、.cmd、.com、または .exe です。These files may have .bat, .cmd, .com, or .exe file extensions.

実行可能プログラムまたはオペレーティング システム コマンドをジョブ ステップとして使用する場合は、次の項目を指定する必要があります。When you use an executable program or an operating-system command as a job step, you must specify:

  • コマンドが正常に終了した場合に返されるプロセス終了コード。The process exit code returned if the command was successful.

  • 実行するコマンドです。The command to execute. オペレーティング システム コマンドを実行する場合、これはコマンド自体を指します。To execute an operating system command, this is simply the command itself. 外部プログラムの場合は、これはプログラムの名前とプログラムの引数になります。例:C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -e -q "sp_who"For an external program, this is the name of the program and the arguments to the program, for example: C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -e -q "sp_who"

    注意

    システム パスまたはジョブ ステップの実行ユーザーのパスで指定されたディレクトリ内に、実行可能ファイルが存在しない場合は、実行可能ファイルの完全パスを指定する必要があります。You must provide the full path to the executable if the executable is not located in a directory specified in the system path or the path for the user that the job step runs as.

Transact-SQL ジョブ ステップTransact-SQL Job Steps

Transact-SQLTransact-SQL ジョブ ステップを作成するには、次の操作を行う必要があります。When you create a Transact-SQLTransact-SQL job step, you must:

  • ジョブを実行するデータベースを特定します。Identify the database in which to run the job.

  • 実行する Transact-SQLTransact-SQL ステートメントを入力します。Type the Transact-SQLTransact-SQL statement to execute. このステートメントで、ストアド プロシージャまたは拡張ストアド プロシージャを呼び出すことができます。The statement may call a stored procedure or an extended stored procedure.

必要に応じて、ジョブ ステップのコマンドとして既存の Transact-SQLTransact-SQL ファイルを開くことができます。Optionally, you can open an existing Transact-SQLTransact-SQL file as the command for the job step.

Transact-SQLTransact-SQL ジョブ ステップでは SQL ServerSQL Server エージェント プロキシを使用しません。job steps do not use SQL ServerSQL Server Agent proxies. このジョブ ステップはジョブ ステップの所有者として実行されるか、ジョブ ステップの所有者が sysadmin 固定サーバー ロールのメンバーの場合には SQL ServerSQL Server エージェント サービス アカウントとして実行されます。Instead, the job step runs as the owner of the job step, or as the SQL ServerSQL Server Agent service account if the owner of the job step is a member of the sysadmin fixed server role. sysadmin 固定サーバー ロールのメンバーは、sp_add_jobstep ストアド プロシージャの Transact-SQLTransact-SQL database_user_name パラメーターを使用して、別のユーザーのコンテキストで ジョブ ステップが実行されるように指定することもできます。Members of the sysadmin fixed server role can also specify that Transact-SQLTransact-SQL job steps run under the context of another user by using the database_user_name parameter of the sp_add_jobstep stored procedure. 詳細については、「 sp_add_jobstep (Transact-SQL)」を参照してください。For more information, see sp_add_jobstep (Transact-SQL).

注意

1 つの Transact-SQLTransact-SQL ジョブ ステップに、複数のバッチを含めることができます。A single Transact-SQLTransact-SQL job step can contain multiple batches. Transact-SQLTransact-SQL ジョブ ステップには埋め込み GO コマンドを含めることができます。job steps can contain embedded GO commands.

PowerShell スクリプティング ジョブ ステップPowerShell Scripting Job Steps

PowerShell スクリプト ジョブ ステップを作成するときには、次のいずれかをステップのコマンドとして指定する必要があります。When you create a PowerShell script job step, you must specify one of two things as the command for the step:

  • PowerShell スクリプトのテキスト。The text of a PowerShell script.

  • 開く対象の既存の PowerShell スクリプト ファイル。An existing PowerShell script file to be opened.

SQL ServerSQL Server エージェントの PowerShell サブシステムは、PowerShell セッションを開いて SQL ServerSQL Server PowerShell スナップインを読み込みます。ジョブ ステップ コマンドとして使用される PowerShell スクリプトでは、 SQL ServerSQL Server PowerShell プロバイダーおよびコマンドレットを参照できます。The SQL ServerSQL Server Agent PowerShell subsystem opens a PowerShell session and loads the SQL ServerSQL Server PowerShell snap-ins. The PowerShell script used as the job step command can reference the SQL ServerSQL Server PowerShell provider and cmdlets. SQL ServerSQL Server PowerShell スナップインを使用した PowerShell スクリプトの作成の詳細については、「 SQL Server PowerShell」を参照してください。For more information about writing PowerShell scripts using the SQL ServerSQL Server PowerShell snap-ins, see the SQL Server PowerShell.

ActiveX スクリプティング ジョブ ステップActiveX Scripting Job Steps

重要

ActiveX スクリプティング ジョブ ステップは、 SQL ServerSQL Server の将来のバージョンで MicrosoftMicrosoftSQL ServerSQL Serverエージェントから削除される予定です。The ActiveX scripting job step 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.

ActiveX スクリプティング ジョブ ステップを作成するには、次の操作を行う必要があります。When you create an ActiveX scripting job step, you must:

  • ジョブ ステップを記述するスクリプティング言語を特定します。Identify the scripting language in which the job step is written.

  • ActiveX スクリプトを記述します。Write the ActiveX script.

ジョブ ステップのコマンドとして既存の ActiveX スクリプト ファイルを開くこともできます。You can also open an existing ActiveX script file as the command for the job step. ActiveX スクリプト コマンドは、Microsoft Visual Basic などを使用して外部でコンパイルし、実行可能プログラムとして実行することもできます。Alternatively, ActiveX script commands can be externally compiled (for example, using Microsoft Visual Basic) and then run as executable programs.

ジョブ ステップ コマンドが ActiveX スクリプトの場合は、SQLActiveScriptHost オブジェクトを使用してジョブ ステップ履歴ログに出力するか、COM オブジェクトを作成することができます。When a job step command is an ActiveX script, you can use the SQLActiveScriptHost object to print output to the job step history log or create COM objects. SQLActiveScriptHost は、 SQL ServerSQL Server エージェントのホスト システムによってスクリプト名前空間に導入されるグローバル オブジェクトです。SQLActiveScriptHost is a global object that is introduced by SQL ServerSQL Server Agent hosting system into the script name space. このオブジェクトには 2 つのメソッドがあります (Print と CreateObject)。The object has two methods (Print and CreateObject). 次の例は、Visual Basic Scripting Edition (VBScript) での ActiveX スクリプティングの動作を示しています。The following example shows how ActiveX scripting works in Visual Basic Scripting Edition (VBScript).

' VBScript example for ActiveX Scripting job step  
' Create a Dmo.Server object. The object connects to the  
' server on which the script is running.  
  
Set oServer = CreateObject("SQLDmo.SqlServer")  
oServer.LoginSecure = True  
oServer.Connect "(local)"  
'Disconnect and destroy the server object  
oServer.DisConnect  
Set oServer = nothing  

レプリケーション ジョブ ステップReplication Job Steps

レプリケーションを使用してパブリケーションとサブスクリプションを作成した場合、既定でレプリケーション ジョブが作成されます。When you create publications and subscriptions using replication, replication jobs are created by default. 作成されるジョブの種類は、レプリケーションの種類 (スナップショット レプリケーション、トランザクション レプリケーション、またはマージ レプリケーション) と使用するオプションによって決まります。The type of job created is determined by the type of replication (snapshot, transactional, or merge) and the options used.

レプリケーション ジョブ ステップでは、次のレプリケーション エージェントのいずれかがアクティブになります。Replication job steps activate one of these replication agents:

  • スナップショット エージェント (スナップショット ジョブ)Snapshot Agent (Snapshot job)

  • ログ リーダー エージェント (LogReader ジョブ)Log Reader Agent (LogReader job)

  • ディストリビューション エージェント (ディストリビューション ジョブ)Distribution Agent (Distribution job)

  • マージ エージェント (マージ ジョブ)Merge Agent (Merge job)

  • キュー リーダー エージェント (QueueReader ジョブ)Queue Reader Agent (QueueReader job)

レプリケーションのセットアップ時には、レプリケーション エージェントを SQL ServerSQL Server エージェント起動後に連続的に実行するか、要求に応じて実行するか、またはスケジュールに従って実行するかを指定できます。When replication is set up, you can specify to run the replication agents in one of three ways: continuously after SQL ServerSQL Server Agent is started, on demand, or according to a schedule. レプリケーション エージェントの詳細については、「 レプリケーション エージェントの概要」を参照してください。For more information about replication agents, see Replication Agents Overview.

Analysis Services ジョブ ステップAnalysis Services Job Steps

SQL ServerSQL Server エージェントでは、コマンド ジョブ ステップとクエリ ジョブ ステップという 2 種類の Analysis Services ジョブ ステップがサポートされます。Agent supports two distinct types of Analysis Services job steps, command job steps, and query job steps.

Analysis Services コマンド ジョブ ステップAnalysis Services Command Job Steps

Analysis ServicesAnalysis Services コマンド ジョブ ステップを作成するには、次の操作を行う必要があります。When you create an Analysis ServicesAnalysis Services command job step, you must:

  • ジョブ ステップが実行される OLAP サーバーのデータベースを特定します。Identify the database OLAP server in which to run the job step.

  • 実行するステートメントを入力します。Type the statement to execute. ステートメントは、 Analysis ServicesAnalysis Services Execute メソッドの XML である必要があります。The statement must be an XML for Analysis ServicesAnalysis Services Execute method. ステートメントには、完全な SOAP エンベロープまたは Analysis ServicesAnalysis Services Discover メソッドの XML が含まれていない可能性があります。The statement may not contain a complete SOAP envelope or an XML for Analysis ServicesAnalysis Services Discover method. SOAP エンベロープおよび SQL Server Management StudioSQL Server Management Studio Discover メソッドは、 ではサポートされていますが、 SQL ServerSQL Server エージェント ジョブ ステップではサポートされていません。Notice that, while SQL Server Management StudioSQL Server Management Studio supports complete SOAP envelopes and the Discover method, SQL ServerSQL Server Agent job steps do not.

Analysis Services クエリ ジョブ ステップAnalysis Services Query Job Steps

Analysis ServicesAnalysis Services クエリ ジョブ ステップを作成するには、次の操作を行う必要があります。When you create an Analysis ServicesAnalysis Services query job step, you must:

  • ジョブ ステップが実行される OLAP サーバーのデータベースを特定します。Identify the database OLAP server in which to run the job step.

  • 実行するステートメントを入力します。Type the statement to execute. このステートメントでは、多次元式 (MDX) クエリを使用する必要があります。The statement must be a multidimensional expressions (MDX) query.

MDX の詳細については、「 MDX ステートメントの基礎 (MDX)」を参照してください。For more information on MDX, see MDX Statement Fundamentals (MDX).

Integration Services パッケージIntegration Services Packages

Integration ServicesIntegration Services パッケージ ジョブ ステップを作成するには、次の操作を行う必要があります。When you create an Integration ServicesIntegration Services package job step, you must do the following:

  • パッケージのソースを特定します。Identify the source of the package.

  • パッケージの場所を特定します。Identify the location of the package.

  • パッケージに構成ファイルが必要な場合は、構成ファイルを特定します。If configuration files are required for the package, identify the configuration files.

  • パッケージにコマンド ファイルが必要な場合は、コマンド ファイルを特定します。If command files are required for the package, identify the command files.

  • パッケージに使用する検証方法を特定します。Identify the verification to use for the package. たとえば、パッケージに署名や特定のパッケージ ID が必要であることを指定できます。For example, you can specify that the package must be signed, or that the package must have a specific package ID.

  • パッケージのデータ ソースを特定します。Identify the data sources for the package.

  • ログ プロバイダーを特定します。Identify the log providers for the package.

  • パッケージを実行する前に、変数と値を指定します。Specify variables and values to set before running the package.

  • 実行オプションを特定します。Identify execution options.

  • コマンド ライン オプションを追加または変更します。Add or modify command-line options.

SSIS カタログにパッケージを配置し、 [SSIS カタログ] をパッケージのソースとして指定した場合、この構成情報の多くがパッケージから自動的に得られることに注意してください。Note that if you deployed the package to the SSIS Catalog and you specify SSIS Catalog as the package source, much of this configuration information is obtained automatically from the package. [構成] タブでは、環境、パラメーターの値、接続マネージャーの値、プロパティのオーバーライド設定、およびパッケージが 32 ビット ランタイム環境で実行するかどうかを指定できます。Under the Configuration tab you can specify the environment, parameter values, connection manager values, property overrides, and whether the package runs in a 32-bit runtime environment.

Integration ServicesIntegration Services パッケージを実行するジョブ ステップの作成に関する詳細については、「 パッケージに対する SQL Server エージェント ジョブ」を参照してください。For more information about creating job steps that run Integration ServicesIntegration Services packages, see SQL Server Agent Jobs for Packages.

[説明]Description トピックTopic
実行可能プログラムを使用してジョブ ステップを作成する方法について説明します。Describes how to create a job step with an executable program. CmdExec ジョブ ステップの作成Create a CmdExec Job Step
SQL ServerSQL Server エージェントのアクセス許可をリセットする方法について説明します。Describes how to reset SQL ServerSQL Server Agent permissions. SQL Server エージェント ジョブ ステップを作成および管理するユーザーの構成Configure a User to Create and Manage SQL Server Agent Jobs
Transact-SQLTransact-SQL ジョブ ステップを作成する方法について説明します。Describes how to create a Transact-SQLTransact-SQL job step. Create a Transact-SQL Job StepCreate a Transact-SQL Job Step
Microsoft SQL ServerSQL Server エージェント Transact-SQL ジョブ ステップのオプションを定義する方法について説明します。Describes how to define options for Microsoft SQL ServerSQL Server Agent Transact-SQL job steps. Define Transact-SQL Job Step OptionsDefine Transact-SQL Job Step Options
ActiveX スクリプト ジョブ ステップを作成する方法について説明します。Describes how to create an ActiveX script job step. Create an ActiveX Script Job StepCreate an ActiveX Script Job Step
SQL ServerSQL Server Analysis Service のコマンドとクエリを実行する SQL ServerSQL Server エージェント ジョブ ステップを作成し、定義する方法について説明します。Describes how to create and define SQL ServerSQL Server Agent job steps that execute SQL ServerSQL Server Analysis Services commands and queries. Create an Analysis Services Job StepCreate an Analysis Services Job Step
ジョブの実行中にエラーが発生した場合に SQL ServerSQL Server が実行する必要があるアクションについて説明します。Describes what action SQL ServerSQL Server should take if a failure occurs during job execution. Set Job Step Success or Failure FlowSet Job Step Success or Failure Flow
[ジョブ ステップのプロパティ] ダイアログ ボックスにジョブ ステップの詳細を表示する方法について説明します。Describes how to view job step details in the Job Step Properties dialog. ジョブ ステップ情報の表示View Job Step Information
SQL ServerSQL Server エージェントのジョブ ステップのログを削除する方法について説明します。Describes how to delete a SQL ServerSQL Server Agent job step log. Delete a Job Step LogDelete a Job Step Log

参照See Also

sysjobstepslogs (Transact-SQL)sysjobstepslogs (Transact-SQL)
ジョブの作成Create Jobs
sp_add_job (Transact-SQL)sp_add_job (Transact-SQL)