SQL Serverでは、sp_update_jobstep
を使用できます。 SQLServerエージェントジョブの既存のジョブステップを変更するためのストアドプロシージャ。
SQL Serverエージェントジョブを作成するときは、そのジョブに対して1つ以上のジョブステップを作成します。 sp_update_jobstep
手順を使用すると、実際のジョブやその他のジョブステップとは関係なく、特定のジョブステップを更新できます。
例
この例では、1つのジョブステップでジョブを作成してから、sp_update_jobstep
を使用します。 ジョブステップを変更します。
ジョブを作成する
まず、ジョブを作成します:
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BackupMoviesDB',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
GO
EXEC sp_add_jobstep
@job_name = N'BackupMoviesDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
GO
EXEC sp_add_schedule
@schedule_name = N'Run_Sat_5AM',
@freq_type = 8,
@freq_interval = 64,
@freq_recurrence_factor = 1,
@active_start_time = 050000;
GO
EXEC sp_attach_schedule
@job_name = N'BackupMoviesDB',
@schedule_name = N'Run_Sat_5AM';
GO
EXEC sp_add_jobserver
@job_name = N'BackupMoviesDB';
GO
上記のコードは5つのストアドプロシージャを使用していますが、sp_add_jobstep
プロシージャは、sp_update_jobstep
で変更できる詳細を含む唯一のプロシージャです。 。他のプロシージャには、独自の一致する「更新」プロシージャ(sp_update_job
など)があります。 およびsp_update_schedule
。
したがって、明確にするために、次の部分はsp_update_jobstep
で更新できる部分です。 手順。
EXEC sp_add_jobstep
@job_name = N'BackupMoviesDB',
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 5,
@retry_interval = 5;
この場合、ジョブを作成するときに6つの引数を指定しました。手順は実際にはそれ以上のものを受け入れますが、これは私たちの目的には役立ちます。
ジョブステップを更新する
これで、sp_update_jobstep
を使用できます 上記のジョブステップを変更します。
EXEC sp_update_jobstep
@job_name = N'BackupMoviesDB',
@step_id = 1,
@step_name = N'Run the backup',
@subsystem = N'TSQL',
@command = N'BACKUP DATABASE [Movies] TO DISK = N''C:\Backups\Movies.bak'' WITH CHECKSUM',
@retry_attempts = 10,
@retry_interval = 5;
この例で行うのは、5
からの再試行回数を増やすことだけです。 10
へ 。
sp_update_jobstep
ストアドプロシージャは、パラメータ値が指定されている設定のみを変更します。パラメータを省略すると、現在の設定が保持されます。
したがって、この場合、次のような他の引数を省略できます。
EXEC sp_update_jobstep
@job_name = N'BackupMoviesDB',
@step_id = 1,
@retry_attempts = 10;
ジョブを確認する
sp_help_job
を使用できます システム内のSQLServerエージェントジョブに関する情報を取得します。
パラメータの有無にかかわらず使用できますが、ジョブステップの詳細を取得するには、ジョブ名またはIDを指定する必要があります。
このように:
EXEC sp_help_job
@job_name = 'BackupMoviesDB';
SSMSで実行した場合の結果は次のようになります。
IDを使用する場合のコードの例を次に示します。
EXEC sp_help_job
@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';
IDを使用する場合、必要に応じてパラメータ名を省略できます。
例:
EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';
完全な構文
sp_update_jobstep
の完全な構文 このようになります:
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' }
sp_update_jobstep
については、Microsoftのドキュメントを参照してください。 各パラメータの説明と、それぞれが受け入れる値について説明します。
ジョブステップを更新すると、ジョブのバージョン番号が増加することに注意してください。