SQL Serverでは、sp_update_job
を使用できます 既存のSQLServerエージェントジョブを変更するためのストアドプロシージャ。
例
この例では、ジョブを作成してから、sp_update_job
を使用します。 そのジョブを変更します。
ジョブを作成する
まず、ジョブを作成します:
USE msdb;
GO
EXEC sp_add_job
@job_name = N'BakMovies',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
GO
EXEC sp_add_jobstep
@job_name = N'BakMovies',
@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'BakMovies',
@schedule_name = N'Run_Sat_5AM';
GO
EXEC sp_add_jobserver
@job_name = N'BakMovies';
GO
上記のコードは5つのストアドプロシージャを使用していますが、sp_update_job
プロシージャは、sp_add_job
で作成された詳細のみを更新します 手順。他の手順には、独自の一致する「更新」手順があります。
明確にするために、次の部分はsp_update_job
で更新できる部分です。 手順。
EXEC sp_add_job
@job_name = N'BakMovies',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
この場合、ジョブを作成するときに3つの引数のみを提供しました。プロシージャは実際にはそれ以上のものを受け入れますが、必要な引数はジョブの名前だけです。
ジョブを更新する
これで、sp_update_job
を使用できます 上記のジョブを変更します。
EXEC sp_update_job
@job_name = N'BakMovies',
@new_name = N'BackupMoviesDB',
@description = N'Backup the Movies database.',
@category_name = 'Database Maintenance';
この例で行うのは、ジョブの名前を変更することだけです。
sp_update_job
ストアドプロシージャは、パラメータ値が指定されている設定のみを変更します。パラメータを省略すると、現在の設定が保持されます。
したがって、この場合、説明とカテゴリ名を省略できます。
EXEC sp_update_job
@job_name = N'BakMovies',
@new_name = N'BackupMoviesDB';
ジョブを無効にする
@enabled
を設定すると、ジョブを無効にできます 0
へ :
EXEC sp_update_job
@job_name = N'BackupMoviesDB',
@new_name = N'BackupMoviesDB (DISABLED)',
@enabled = 0;
この例では、ジョブが無効になっていることを明確にするために、ジョブの名前も変更しました。
ジョブを確認する
sp_help_job
を使用できます ジョブの現在の設定を表示します。
パラメータの有無にかかわらず使用できます。パラメータなしで使用すると、すべてのジョブが返されます。
EXEC sp_help_job;
1つのジョブの詳細のみを表示したい場合は、ジョブの名前またはIDを指定できます。
このように:
EXEC sp_help_job
@job_name = 'BackupMoviesDB';
SSMSで実行した場合の結果は次のようになります。
ただし、名前を入力するときは、仕事に付けた名前を覚えておく必要があります。この場合、前の例(ジョブを無効にしたとき)の後にこの手順を実行すると、次のようにする必要があります。
EXEC sp_help_job
@job_name = 'BackupMoviesDB (DISABLED)';
ただし、ジョブのIDは一定のままなので、ジョブの名前に関係なく使用できます。
例:
EXEC sp_help_job
@job_id = '158D714B-6686-48FD-BB41-D35C6EE70AED';
IDを使用する場合、必要に応じてパラメータ名を省略できます。
例:
EXEC sp_help_job '158D714B-6686-48FD-BB41-D35C6EE70AED';
ジョブステップ、スケジュールなどはどうなりますか?
ジョブを変更しても、そのジョブの手順とスケジュール情報が損なわれることはありません。変更を加えた後も、ジョブの手順とスケジュールはそのまま残ります。
ステップやスケジュールを変更する必要がある場合は、それらに適切なストアドプロシージャを使用する必要があります(たとえば、sp_update_schedule
を使用します) スケジュールとsp_update_jobstep
を更新します ジョブステップを更新します。
完全な構文
sp_update_job
の完全な構文 このようになります:
sp_update_job [ @job_id =] job_id | [@job_name =] 'job_name'
[, [@new_name =] 'new_name' ]
[, [@enabled =] enabled ]
[, [@description =] 'description' ]
[, [@start_step_id =] step_id ]
[, [@category_name =] 'category' ]
[, [@owner_login_name =] 'login' ]
[, [@notify_level_eventlog =] eventlog_level ]
[, [@notify_level_email =] email_level ]
[, [@notify_level_netsend =] netsend_level ]
[, [@notify_level_page =] page_level ]
[, [@notify_email_operator_name =] 'operator_name' ]
[, [@notify_netsend_operator_name =] 'netsend_operator' ]
[, [@notify_page_operator_name =] 'page_operator' ]
[, [@delete_level =] delete_level ]
[, [@automatic_post =] automatic_post ]
sp_update_job
については、Microsoftのドキュメントを参照してください。 各パラメータの説明と、それぞれが受け入れる値について説明します。