sp_update_jobstep (Transact-SQL)

適用対象: SQL ServerAzure 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_idは uniqueidentifier で、既定値は NULL.

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

[ @job_name = ] N'job_name'

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

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

[ @step_id = ] step_id

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

[ @step_name = ] N'step_name'

ステップの新しい名前。 @step_nameは sysname で、既定値は NULL.

[ @subsystem = ] N'subsystem'

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

[ @command = ] N'command'

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

[ @additional_parameters = ] N'additional_parameters'

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

[ @cmdexec_success_code = ] cmdexec_success_code

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

[ @on_success_action = ] on_success_action

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

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

[ @on_success_step_id = ] on_success_step_id

ステップが成功し、@on_success_actionが実行される場合に実行する、このジョブのステップの識別番号。4 @on_success_step_idは int で、既定値は NULL.

[ @on_fail_action = ] on_fail_action

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

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

[ @on_fail_step_id = ] on_fail_step_id

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

[ @server = ] N'server'

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

[ @database_name = ] N'database_name'

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

[ @database_user_name = ] N'database_user_name'

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

[ @retry_attempts = ] retry_attempts

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

[ @retry_interval = ] retry_interval

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

[ @os_run_priority = ] os_run_priority

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

[ @output_file_name = ] N'output_file_name'

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

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

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

@output_file_name = ' '

[ @flags = ] フラグ

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

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

[ @proxy_id = ] proxy_id

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

[ @proxy_name = ] N'proxy_name'

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

リターン コードの値

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

解説

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

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

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

アクセス許可

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

他のユーザーには、データベース内の固定データベース ロールSQL Server エージェント次のいずれかを付与するmsdb必要があります。

  • 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