次の方法で共有


sp_update_jobstep (Transact-SQL)

自動化された処理の実行に使用するジョブのステップに関する設定を変更します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_update_jobstep 
     {   [@job_id =] job_id 
       | [@job_name =] 'job_name' } ,
     [@step_id =] step_id
     [ , [@step_name =] 'step_name' ]
     [ , [@subsystem =] 'subsystem' ] 
     [ , [@command =] 'command' ]
     [ , [@additional_parameters =] 'parameters' ]
     [ , [@cmdexec_success_code =] success_code ]
     [ , [@on_success_action =] success_action ] 
     [ , [@on_success_step_id =] success_step_id ]
          [ , [@on_fail_action =] fail_action ] 
          [ , [@on_fail_step_id =] fail_step_id ]
     [ , [@server =] 'server' ] 
     [ , [@database_name =] 'database' ]
     [ , [@database_user_name =] 'user' ] 
     [ , [@retry_attempts =] retry_attempts ]
     [ , [@retry_interval =] retry_interval ] 
     [ , [@os_run_priority =] run_priority ]
     [ , [@output_file_name =] 'file_name' ] 
     [ , [@flags =] flags ]
     [ ,  {   [ @proxy_id = ] proxy_id 
            | [ @proxy_name = ] 'proxy_name' } 

引数

  • [ @job_id = ] job_id
    ステップが属するジョブの識別番号を指定します。job_id のデータ型は uniqueidentifier で、既定値は NULL です。job_id または job_name のいずれかを指定する必要があります。両方を指定することはできません。

  • [ @job_name =] 'job_name'
    ステップが属するジョブの名前を指定します。job_name のデータ型は sysname で、既定値は NULL です。job_id または job_name のいずれかを指定する必要があります。両方を指定することはできません。

  • [ @step_id =] step_id
    変更するジョブ ステップの識別番号を指定します。この番号は変更できません。step_id のデータ型は int で、既定値はありません。

  • [ @step_name =] 'step_name'
    ステップの新しい名前を指定します。step_name のデータ型は sysname で、既定値は NULL です。

  • [ @subsystem =] 'subsystem'
    Microsoft SQL Server エージェントで command を実行するときに使用するサブシステムを指定します。subsystem のデータ型は nvarchar(40) で、既定値は NULL です。

  • [ @command =] 'command'
    subsystem を介して実行するコマンドを指定します。command のデータ型は nvarchar(max) で、既定値は NULL です。

  • [ @additional_parameters =] 'parameters'
    単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

  • [ @cmdexec_success_code = ] success_code
    command が正常に実行されたことを示すために、CmdExec サブシステム コマンドから返す値を指定します。success_code のデータ型は int で、既定値は NULL です。

  • [ @on_success_action =] success_action
    ステップが成功した場合に実行する動作を指定します。success_action のデータ型は tinyint で、既定値は NULL です。次のいずれかの値を指定できます。

    説明 (動作)

    1

    成功した状態で終了

    2

    失敗した状態で終了

    3

    次のステップに進む

    4

    success_step_id で指定したステップに進む

  • [ @on_success_step_id = ] success_step_id
    ステップが成功し、success_action の値が 4 の場合に実行される、ジョブ内のステップの識別番号を指定します。success_step_id のデータ型は int で、既定値は NULL です。

  • [ @on_fail_action =] fail_action
    ステップが失敗した場合に実行される動作を指定します。fail_action のデータ型は tinyint で、既定値は NULL です。次のいずれかの値を指定できます。

    説明 (動作)

    1

    成功した状態で終了

    2

    失敗した状態で終了

    3

    次のステップに進む

    4

    fail_step_id で指定したステップに進む

  • [ @on_fail_step_id =] fail_step_id
    ステップが失敗し、fail_action の値が 4 の場合に実行される、ジョブ内のステップの識別番号を指定します。fail_step_id のデータ型は int で、既定値は NULL です。

  • [ @server = ] 'server'
    単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。server のデータ型は nvarchar(128) で、既定値は NULL です。

  • [ @database_name =] 'database'
    Transact-SQL ステップを実行するデータベースの名前を指定します。database のデータ型は sysname です。角かっこ ([ ]) で囲まれた名前は使用できません。既定値は NULL です。

  • [ @database_user_name =] 'user'
    Transact-SQL ステップを実行するときに使用するユーザー アカウントの名前を指定します。user のデータ型は sysname で、既定値は NULL です。

  • [ @retry_attempts =] retry_attempts
    ステップが失敗したときに行う再試行の回数を指定します。retry_attempts のデータ型は int で、既定値は NULL です。

  • [ @retry_interval =] retry_interval
    再試行の間隔を分単位で指定します。retry_interval のデータ型は int で、既定値は NULL です。

  • [ @os_run_priority = ] run_priority
    単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

  • [ @output_file_name =] 'file_name'
    ステップの出力を保存するファイルの名前を指定します。file_name のデータ型は nvarchar(200) で、既定値は NULL です。このパラメータは、Transact-SQL サブシステムまたは CmdExec サブシステム上で実行されるコマンドに対してのみ有効です。

    output_file_name の値を NULL に戻すには、output_file_name に空文字列 (' ') または空白文字から成る文字列を設定する必要がありますが、CHAR(32) 関数を使用することはできません。この引数に空文字列を設定する例を次に示します。

    @output_file_name = ' '

  • [ @flags =] flags
    動作を制御するオプションを指定します。flags のデータ型は int で、次のいずれかの値を指定できます。

    説明

    0 (既定値)

    出力ファイルを上書き

    2

    出力ファイルに追加

    4

    Transact-SQL ジョブ ステップの出力をステップ履歴に書き込む

    8

    ログをテーブルに書き込む (既存の履歴を上書き)

    16

    ログをテーブルに書き込む (既存の履歴に追加)

  • [ @proxy_id = ] proxy_id
    ジョブ ステップを実行するプロキシの ID 番号を指定します。proxy_id のデータ型は int で、既定値は NULL です。proxy_id、proxy_name、および user_name のいずれも指定しない場合、ジョブ ステップは、SQL Server エージェントのサービス アカウントで実行されます。

  • [ @proxy_name = ] 'proxy_name'
    ジョブ ステップを実行するプロキシの名前を指定します。proxy_name のデータ型は sysname で、既定値は NULL です。proxy_id、proxy_name、および user_name のいずれも指定しない場合、ジョブ ステップは、SQL Server エージェントのサービス アカウントで実行されます。

リターン コード値

0 (成功) または 1 (失敗)

説明

sp_update_jobstep は、msdb データベースから実行する必要があります。

ジョブ ステップを更新すると、ジョブのバージョン番号が増えます。

権限

既定では、このストアド プロシージャを実行できるのは、sysadmin 固定サーバー ロールのメンバです。他のユーザーには、msdb データベースの次のいずれかの SQL Server エージェント固定データベース ロールが許可されている必要があります。

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

これらのロールの権限の詳細については、「SQL Server エージェントの固定データベース ロール」を参照してください。

他のユーザーが所有するジョブ ステップを更新できるのは、sysadmin のメンバだけです。

ジョブ ステップでプロキシにアクセスする必要がある場合、ジョブ ステップの作成者は、ジョブ ステップのプロキシへのアクセス権を保持している必要があります。Transact-SQL を除くすべてのサブシステムでは、プロキシ アカウントが必要です。sysadmin のメンバは、すべてのプロキシへのアクセス権を保持しているので、そのプロキシに SQL Server エージェント サービス アカウントを使用できます。

次の例では、Weekly Sales Data Backup ジョブの最初のステップに対して、再試行の回数を変更します。この例を実行すると、再試行回数は 10 回になります。

USE msdb ;
GO

EXEC dbo.sp_update_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_id = 1,
    @retry_attempts = 10 ;
GO