ジョブ ステップの管理

適用対象:SQL ServerAzure SQL Managed Instance

重要

現在、Azure SQL Managed Instance によって、すべてではありませんが、ほとんどの SQL Server エージェントの機能がサポートされています。 詳細については、Azure SQL Managed Instance と SQL Server の T-SQL の相違点に関するページを参照してください。

ジョブ ステップは、ジョブがデータベースまたはサーバーで行う処理です。 すべてのジョブには、最低 1 つのジョブ ステップを含める必要があります。 ジョブ ステップには次のような種類があります。

  • 実行可能プログラムまたはオペレーティング システムのコマンド。

  • Transact-SQL ステートメント。ストアド プロシージャと拡張ストアド プロシージャを含みます。

  • PowerShell スクリプト。

  • Microsoft ActiveX スクリプト。

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

  • Analysis Services タスク。

  • Integration Services パッケージ。

各ジョブ ステップは特定のセキュリティ コンテキストで実行されます。 ジョブ ステップがプロキシを指定している場合、このジョブ ステップは指定されたプロキシの資格情報のセキュリティ コンテキストで実行されます。 ジョブ ステップがプロキシを指定していない場合、このジョブ ステップは SQL Server エージェント サービス アカウントのコンテキストで実行されます。 プロキシを明示的に指定せずにジョブを作成できるのは、sysadmin 固定サーバー ロールのメンバーのみです。

ジョブ ステップは特定の Microsoft Windows ユーザーのコンテキストで実行されるので、ユーザーには、ジョブ ステップの実行に必要なアクセス許可と構成が必要です。 たとえば、ドライブ文字または汎用名前付け規則 (UNC) パスを必要とするようなジョブを作成した場合、タスクのテスト時にはジョブ ステップを作成者の Windows ユーザー アカウントで実行していることがあります。 ところが、このジョブ ステップの Windows ユーザーにも、このジョブ ステップを実行するためのアクセス許可、ドライブ文字構成、指定ドライブへのアクセスが必要になります。 そうでなければ、このジョブ ステップは失敗します。 この問題を回避するには、各ジョブ ステップのプロキシに、ジョブ ステップで実行するタスクに対して必要なアクセス許可が設定されていることを確認してください。 詳細については、「 セキュリティと保護 (データベース エンジン)」を参照してください。

ジョブ ステップのログ

SQL Server エージェントは、オペレーティング システム ファイルまたは msdb データベースの sysjobstepslogs テーブルに、一部のジョブ ステップからの出力を書き込むことができます。 両方の出力先に出力を書き込めるジョブ ステップの種類は次のとおりです。

  • 実行可能プログラムまたはオペレーティング システムのコマンド。

  • Transact-SQL ステートメント。

  • Analysis Services タスク。

ジョブ ステップの出力をオペレーティング システム ファイルに書き込めるのは、sysadmin 固定サーバー ロールのメンバーであるユーザーが実行するジョブ ステップのみです。 ジョブ ステップを実行するユーザーが、msdb データベースの SQLAgentUserRole 固定データベース ロール、SQLAgentReaderRole 固定データベース ロール、または SQLAgentOperatorRole 固定データベース ロールのメンバーである場合、ジョブ ステップの出力は sysjobstepslogs テーブルにのみ書き込むことができます。

ジョブ ステップのログは、ジョブまたはジョブ ステップが削除されると自動的に削除されます。

Note

レプリケーション タスクと Integration Services パッケージのジョブ ステップのログ記録は、それぞれのサブシステムによって処理されます。 これらのタイプのジョブ ステップについては、 SQL Server エージェントを使用してジョブ ステップのログ記録を構成することはできません。

ジョブ ステップとしての実行可能プログラムとオペレーティング システム コマンド

実行可能プログラムとオペレーティング システム コマンドは、ジョブ ステップとして使用できます。 これらのファイルの拡張子は、.bat、.cmd、.com、または .exe です。

実行可能プログラムまたはオペレーティング システム コマンドをジョブ ステップとして使用する場合は、次の項目を指定する必要があります。

  • コマンドが正常に終了した場合に返されるプロセス終了コード。

  • 実行するコマンドです。 オペレーティング システム コマンドを実行する場合、これはコマンド自体を指します。 外部プログラムの場合は、 C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -e -q "sp_who"など、プログラム名とそのプログラムの引数を指します。

    Note

    システム パスまたはジョブ ステップの実行ユーザーのパスで指定されたディレクトリ内に、実行可能ファイルが存在しない場合は、実行可能ファイルの完全パスを指定する必要があります。

Transact-SQL ジョブ ステップ

Transact-SQL ジョブ ステップを作成すると、次の操作を行う必要があります。

  • ジョブを実行するデータベースを特定します。

  • 実行する Transact-SQL ステートメントを入力します。 このステートメントで、ストアド プロシージャまたは拡張ストアド プロシージャを呼び出すことができます。

必要に応じて、ジョブ ステップのコマンドとして、既存の Transact-SQL ファイルを開くことができます。

Transact-SQL ジョブ ステップでは、SQL Server エージェント プロキシを使用しません。 このジョブ ステップはジョブ ステップの所有者として実行されるか、ジョブ ステップの所有者が sysadmin 固定サーバー ロールのメンバーの場合には SQL Server エージェント サービス アカウントとして実行されます。 また、sysadmin 固定サーバー ロールのメンバーは、sp_add_jobstep ストアド プロシージャの database_user_name パラメーターを使用して、別のユーザーのコンテキストでジョブ ステップが実行されるように指定することもできます。 詳細については、「 sp_add_jobstep (Transact-SQL)」を参照してください。

Note

1 つの Transact-SQL ジョブ ステップに、複数のバッチを含めることができます。 Transact-SQL ジョブ ステップには、埋め込み GO コマンドを含めることができます。

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

PowerShell スクリプト ジョブ ステップを作成するときには、次のいずれかをステップのコマンドとして指定する必要があります。

  • PowerShell スクリプトのテキスト。

  • 開く対象の既存の PowerShell スクリプト ファイル。

SQL Server エージェントの PowerShell サブシステムは、PowerShell セッションを開いて SQL Server PowerShell スナップインを読み込みます。ジョブ ステップ コマンドとして使用される PowerShell スクリプトでは、 SQL Server PowerShell プロバイダーおよびコマンドレットを参照できます。 SQL Server PowerShell スナップインを使用した PowerShell スクリプトの作成の詳細については、「 SQL Server PowerShell」を参照してください。

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

重要

ActiveX スクリプティング ジョブ ステップは、Microsoft SQL Server の将来のバージョンで SQL Server エージェントから削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。

ActiveX スクリプティング ジョブ ステップを作成するには、次の操作を行う必要があります。

  • ジョブ ステップを記述するスクリプティング言語を特定します。

  • ActiveX スクリプトを記述します。

ジョブ ステップのコマンドとして既存の ActiveX スクリプト ファイルを開くこともできます。 ActiveX スクリプト コマンドは、Microsoft Visual Basic などを使用して外部でコンパイルし、実行可能プログラムとして実行することもできます。

ジョブ ステップ コマンドが ActiveX スクリプトの場合は、SQLActiveScriptHost オブジェクトを使用してジョブ ステップ履歴ログに出力するか、COM オブジェクトを作成することができます。 SQLActiveScriptHost は、 SQL Server エージェントのホスト システムによってスクリプト名前空間に導入されるグローバル オブジェクトです。 このオブジェクトには 2 つのメソッドがあります (Print と CreateObject)。 次の例は、Visual Basic Scripting Edition (VBScript) での ActiveX スクリプティングの動作を示しています。

' 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  

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

レプリケーションを使用してパブリケーションとサブスクリプションを作成した場合、既定でレプリケーション ジョブが作成されます。 作成されるジョブの種類は、レプリケーションの種類 (スナップショット レプリケーション、トランザクション レプリケーション、またはマージ レプリケーション) と使用するオプションによって決まります。

レプリケーション ジョブ ステップでは、次のレプリケーション エージェントのいずれかがアクティブになります。

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

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

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

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

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

レプリケーションのセットアップ時には、レプリケーション エージェントを SQL Server エージェント起動後に連続的に実行するか、要求に応じて実行するか、またはスケジュールに従って実行するかを指定できます。 レプリケーション エージェントの詳細については、「 レプリケーション エージェントの概要」を参照してください。

Analysis Services ジョブ ステップ

SQL Server エージェントでは、コマンド ジョブ ステップとクエリ ジョブ ステップという 2 種類の Analysis Services ジョブ ステップがサポートされます。

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

Analysis Services コマンド ジョブ ステップを作成するには、次の操作を行う必要があります。

  • ジョブ ステップが実行される OLAP サーバーのデータベースを特定します。

  • 実行するステートメントを入力します。 ステートメントは、Analysis Services Execute メソッドの XML である必要があります。 ステートメントには、完全な SOAP エンベロープまたは Analysis Services Discover メソッドの XML が含まれていない可能性があります。 SQL Server Management Studio では、完全な SOAP エンベロープと Discover メソッドをサポートしていますが、SQL Server エージェント ジョブのステップではサポートしていないことに注意してください。

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

Analysis Services クエリ ジョブ ステップを作成するには、次の操作を行う必要があります。

  • ジョブ ステップが実行される OLAP サーバーのデータベースを特定します。

  • 実行するステートメントを入力します。 このステートメントでは、多次元式 (MDX) クエリを使用する必要があります。

MDX の詳細については、「 MDX ステートメントの基礎 (MDX)」を参照してください。

Integration Services パッケージ

Integration Services パッケージ ジョブ ステップを作成するには、次の操作を行う必要があります。

  • パッケージのソースを特定します。

  • パッケージの場所を特定します。

  • パッケージに構成ファイルが必要な場合は、構成ファイルを特定します。

  • パッケージにコマンド ファイルが必要な場合は、コマンド ファイルを特定します。

  • パッケージに使用する検証方法を特定します。 たとえば、パッケージに署名や特定のパッケージ ID が必要であることを指定できます。

  • パッケージのデータ ソースを特定します。

  • ログ プロバイダーを特定します。

  • パッケージを実行する前に、変数と値を指定します。

  • 実行オプションを特定します。

  • コマンド ライン オプションを追加または変更します。

SSIS カタログにパッケージを配置し、 [SSIS カタログ] をパッケージのソースとして指定した場合、この構成情報の多くがパッケージから自動的に得られることに注意してください。 [構成] タブでは、環境、パラメーターの値、接続マネージャーの値、プロパティのオーバーライド設定、およびパッケージが 32 ビット ランタイム環境で実行するかどうかを指定できます。

Integration Services パッケージを実行するジョブ ステップの作成に関する詳細については、「 パッケージに対する SQL Server エージェント ジョブ」を参照してください。

説明 トピック
実行可能プログラムを使用してジョブ ステップを作成する方法について説明します。 CmdExec ジョブ ステップの作成
SQL Server エージェントのアクセス許可をリセットする方法について説明します。 SQL Server エージェント ジョブ ステップを作成および管理するユーザーの構成
Transact-SQL ジョブ ステップを作成する方法について説明します。 Create a Transact-SQL Job Step
Microsoft SQL Server エージェント Transact-SQL ジョブ ステップのオプションを定義する方法について説明します。 Define Transact-SQL Job Step Options
ActiveX スクリプト ジョブ ステップを作成する方法について説明します。 Create an ActiveX Script Job Step
SQL Server Analysis Service のコマンドとクエリを実行する SQL Server エージェント ジョブ ステップを作成し、定義する方法について説明します。 Create an Analysis Services Job Step
ジョブの実行中にエラーが発生した場合に SQL Server が実行する必要があるアクションについて説明します。 Set Job Step Success or Failure Flow
[ジョブ ステップのプロパティ] ダイアログ ボックスにジョブ ステップの詳細を表示する方法について説明します。 View Job Step Information
SQL Server エージェントのジョブ ステップのログを削除する方法について説明します。 Delete a Job Step Log

参照

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