次の方法で共有


sp_update_jobstep (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance

SQL Server エージェント サービスで自動アクティビティを実行するために使用されるジョブのステップの設定を変更します。

Transact-SQL 構文表記規則

構文

sp_update_jobstep
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    , [ @step_id = ] step_id
    [ , [ @step_name = ] N'step_name' ]
    [ , [ @subsystem = ] N'subsystem' ]
    [ , [ @command = ] N'command' ]
    [ , [ @additional_parameters = ] N'additional_parameters' ]
    [ , [ @cmdexec_success_code = ] cmdexec_success_code ]
    [ , [ @on_success_action = ] on_success_action ]
    [ , [ @on_success_step_id = ] on_success_step_id ]
    [ , [ @on_fail_action = ] on_fail_action ]
    [ , [ @on_fail_step_id = ] on_fail_step_id ]
    [ , [ @server = ] N'server' ]
    [ , [ @database_name = ] N'database_name' ]
    [ , [ @database_user_name = ] N'database_user_name' ]
    [ , [ @retry_attempts = ] retry_attempts ]
    [ , [ @retry_interval = ] retry_interval ]
    [ , [ @os_run_priority = ] os_run_priority ]
    [ , [ @output_file_name = ] N'output_file_name' ]
    [ , [ @flags = ] flags ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
[ ; ]

引数

[ @job_id = ] 'job_id'

ステップが属するジョブの識別番号を指定します。 @job_iduniqueidentifier で、既定値は NULL です。

@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。

[ @job_name = ] N'job_name'

ステップが属するジョブの名前を指定します。 @job_namesysname で、既定値は NULL です。

@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。

[ @step_id = ] step_id

変更するジョブ ステップの ID 番号。 @step_idint で、既定値はありません。 この数値は変更できません。

[ @step_name = ] N'step_name'

ステップの新しい名前。 @step_namesysname で、既定値は NULL です。

[ @subsystem = ] N'subsystem'

@commandを実行するためにSQL Server エージェントによって使用されるサブシステム。 @subsystemnvarchar(40) で、既定値は NULL です。

[ @command = ] N'command'

@subsystemによって実行されるコマンド。 @commandnvarchar(max) で、既定値は NULL です。

[ @additional_parameters = ] N'additional_parameters'

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

[ @cmdexec_success_code = ] cmdexec_success_code

commandが正常に実行されたことを示すために、CmdExec サブシステム コマンドによって返される値。 @cmdexec_success_codeint で、既定値は NULL です。

[ @on_success_action = ] on_success_action

ステップが成功した場合に実行するアクション。 @on_success_actiontinyint で、既定値は NULL であり、これらの値のいずれかを指定できます。

Value 説明 (アクション)
1 成功した状態で終了する
2 失敗した状態で終了します。
3 次のステップに進みます。
4 手順の @on_success_step_idに移動する

[ @on_success_step_id = ] on_success_step_id

ステップが成功し、 @on_success_action4場合に実行する、このジョブのステップの識別番号。 @on_success_step_idint で、既定値は NULL です。

[ @on_fail_action = ] on_fail_action

ステップが失敗した場合に実行するアクション。 @on_fail_actiontinyint であり、これらの値のいずれかを持つことができます。

Value 説明 (アクション)
1 成功した状態で終了する
2 失敗した状態で終了します。
3 次のステップに進みます。
4 手順 @on_fail_step_idに進む

[ @on_fail_step_id = ] on_fail_step_id

ステップが失敗し、 @on_fail_action4場合に実行する、このジョブのステップの識別番号。 @on_fail_step_idint で、既定値は NULL です。

[ @server = ] N'server'

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

[ @database_name = ] N'database_name'

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

[ @database_user_name = ] N'database_user_name'

Transact-SQL ステップの実行時に使用するデータベース ユーザーの名前。 @database_user_namesysname で、既定値は NULL です。

[ @retry_attempts = ] retry_attempts

ステップが失敗したときに行う再試行の回数を指定します。 @retry_attemptsint で、既定値は NULL です。

[ @retry_interval = ] retry_interval

再試行する間隔を示す分単位の時間。 @retry_intervalint で、既定値は NULL です。

[ @os_run_priority = ] os_run_priority

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

[ @output_file_name = ] N'output_file_name'

この手順の出力が保存されるファイルの名前。 @output_file_namenvarchar(200) で、既定値は NULL です。 このパラメーターは、Transact-SQL または CmdExec サブシステムで実行されているコマンドでのみ有効です。

@output_file_nameNULLに戻すには、@output_file_nameを空の文字列または空白文字の文字列に設定する必要がありますが、CHAR(32)関数を使用することはできません。

たとえば、次のように、この引数を空の文字列に設定します。

@output_file_name = ' '

[ @flags = ] フラグ

動作を制御するオプション。 @flagsint で、既定値は NULL です。

Value 説明
0 (既定値) 出力ファイルを上書きする
2 出力ファイルに追加する
4 Transact-SQL ジョブ ステップの出力をステップ履歴に書き込む
8 テーブルにログを書き込む (既存の履歴を上書きする)
16 テーブルにログを書き込む (既存の履歴に追加)

[ @proxy_id = ] proxy_id

ジョブ ステップが実行されるプロキシの ID 番号。 @proxy_idint で、既定値は NULL です。 @proxy_idが指定されておらず、@proxy_nameも指定されておらず、@database_user_nameも指定されていない場合、ジョブ ステップはSQL Server エージェントのサービス アカウントとして実行されます。

[ @proxy_name = ] N'proxy_name'

ジョブ ステップが実行されるプロキシの名前。 @proxy_namesysname で、既定値は NULL です。 @proxy_idが指定されておらず、@proxy_nameも指定されておらず、@database_user_nameも指定されていない場合、ジョブ ステップはSQL Server エージェントのサービス アカウントとして実行されます。

リターン コードの値

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

解説

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

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

このストアド プロシージャは、azure SQL Database 用の Azure Elastic Jobs サービスの同様のオブジェクトとsp_update_jobstepの名前を共有。 エラスティック ジョブのバージョンについては、「 jobs.sp_update_jobstep (Azure エラスティック ジョブ)」を参照してください。

アクセス許可

このストアド プロシージャは、 db_owner ロールによって所有されています。 EXECUTEアクセス許可は任意のユーザーに付与できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。

他のユーザーには、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