sp_update_jobstep (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
SQL Server エージェント サービスで自動アクティビティを実行するために使用されるジョブのステップの設定を変更します。
構文
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
commandが正常に実行されたことを示すために、CmdExec サブシステム コマンドによって返される値。 @cmdexec_success_code は int で、既定値は NULL
です。
[ @on_success_action = ] on_success_action
ステップが成功した場合に実行するアクション。 @on_success_action は tinyint で、既定値は NULL
であり、これらの値のいずれかを指定できます。
値 | 説明 (アクション) |
---|---|
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 であり、これらの値のいずれかを持つことができます。
値 | 説明 (アクション) |
---|---|
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
です。
値 | 説明 |
---|---|
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 用の Azure Elastic Jobs サービスの同様のオブジェクトとsp_update_jobstep
の名前を共有。 エラスティック ジョブのバージョンについては、「 jobs.sp_update_jobstep (Azure エラスティック ジョブ)」を参照してください。
アクセス許可
この手順では 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