T-SQLを使用してSQLServerエージェントジョブを作成している場合、sp_add_schedule
を使用してスケジュールを作成するかどうか疑問に思われるかもしれません。 ストアドプロシージャまたはsp_add_jobschedule
手順。
これら2つの手順の違いについて簡単に説明します。
違い
-
sp_add_schedule
プロシージャはスケジュールを作成しますが、それをどのジョブにも添付しません。これを行うには、sp_attach_schedule
を使用する必要があります 手順。 -
sp_add_jobschedule
プロシージャは、スケジュールを作成し、それを特定のジョブにすべて一度に添付します。
したがって、sp_add_jobschedule
特定のジョブの新しいスケジュールを作成する必要があり、そのジョブがすでに存在する場合は、を使用しても問題ありません。複数のジョブのスケジュールを作成していて、それらがまだ存在しない場合は、sp_add_schedule
を使用できます。 。次に、sp_attach_schedule
を使用できます 後であなたの仕事にそれを添付します。
ただし、sp_add_schedule
を使用できないわけではありません。 sp_add_jobschedule
の代わりに ジョブがすでに存在する場合。
sp_add_schedule
の使用 (sp_attach_schedule
と組み合わせて )スケジュールを作成してジョブに添付するプロセスを分離できます。単一のスケジュールで単一のジョブを作成する場合でも、このコンボを使用できます。
つまり、sp_add_schedule
を使用できます sp_add_jobschedule
の代わりに すべてのSQLServerエージェントジョブに対して。
例
sp_add_jobschedule
手順
sp_add_jobschedule
プロシージャは、特定のSQLServerエージェントジョブのスケジュールを作成します。このプロシージャを呼び出すときは、適用するジョブの名前またはIDを指定する必要があります。
基本的に、この手順ではスケジュールを作成し、それを1つのジョブに添付します。
これは、ジョブを作成してsp_add_jobschedule
を使用する例です。 ストアドプロシージャ:
EXEC sp_add_jobschedule
@job_name = N'BackupMusicDB',
@name = N'Weekly_Sun_3AM',
@freq_type = 8,
@freq_interval = 1,
@freq_recurrence_factor = 1,
@active_start_time = 30000;
sp_add_jobschedule
を見ると プロシージャ、@job_name
引数はジョブ名を提供します。 @name
引数は、スケジュールに付ける名前を提供します。
sp_add_schedule
手順
sp_add_schedule
プロシージャを使用すると、添付するジョブを指定しなくてもスケジュールを作成できます。
この手順でスケジュールを作成しますが、どのジョブにも添付しません。ジョブにアタッチするには、sp_attach_schedule
を使用する必要があります 手順。
次に例を示します:
EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
EXEC sp_attach_schedule
@job_name = N'BackupPetHotelDB',
@schedule_name = N'RunDailyAM';
GO
sp_attach_schedule
を使用する場合 、ジョブの名前またはそのID(両方ではない)、およびスケジュール名またはID(両方ではない)を指定する必要があります。
sp_add_jobschedule
を添付する スケジュール
sp_attach_schedule
に注意することが重要です sp_add_schedule
の両方で作成されたスケジュールを添付できます sp_add_jobschedule
を使用します 。
つまり、sp_add_jobschedule
を使用してスケジュールを作成します スケジュールの作成時に指定したジョブだけに制限されません。後でsp_attach_schedule
を使用して、他のジョブにアタッチすることもできます。 。