sp_add_jobschedule (Transact-SQL)
適用対象: SQL Server
Azure SQL Managed Instance
SQL Server エージェント ジョブのスケジュールを作成します。
重要
現在、Azure SQL Managed Instance によって、すべてではありませんが、ほとんどの SQL Server エージェントの機能がサポートされています。 詳細については、Azure SQL Managed Instance と SQL Server の T-SQL の相違点に関するページを参照してください。
構文
sp_add_jobschedule
[ @job_id = ] job_id
| [ @job_name = ] N'job_name'
, [ @name = ] N'name'
[ , [ @enabled = ] enabled_flag ]
[ , [ @freq_type = ] frequency_type ]
[ , [ @freq_interval = ] frequency_interval ]
[ , [ @freq_subday_type = ] frequency_subday_type ]
[ , [ @freq_subday_interval = ] frequency_subday_interval ]
[ , [ @freq_relative_interval = ] frequency_relative_interval ]
[ , [ @freq_recurrence_factor = ] frequency_recurrence_factor ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @active_start_time = ] active_start_time ]
[ , [ @active_end_time = ] active_end_time ]
[ , [ @schedule_id = ] schedule_id OUTPUT ]
[ , [ @schedule_uid = ] _schedule_uid OUTPUT ]
[ ; ]
引数
[ @job_id = ] job_id
スケジュールを追加するジョブの識別番号を指定します。 @job_id は uniqueidentifier であり、既定値はありません。
@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。
[ @job_name = ] N'job_name'
スケジュールが追加されるジョブの名前。 @job_name は nvarchar(128)で、既定値はありません。
@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。
[ @name = ] N'name'
スケジュールの名前。 name は nvarchar(128)で、既定値はありません。
[ @enabled = ] enabled_flag
スケジュールの現在の状態を示します。 @enabled は tinyint で、既定値は 1
(有効) です。 の場合 0
、スケジュールは有効になっていません。 スケジュールが無効になっている場合、ジョブは実行されません。
[ @freq_type = ] frequency_type
いつジョブを実行するかを示す値を指定します。 @freq_type は int で、既定値は 0
で、次のいずれかの値を指定できます。
値 | 説明 |
---|---|
1 |
1 度 |
4 |
毎日 |
8 |
週単位 |
16 |
月単位 |
32 |
月単位( freq_intervalに対する相対値)。 |
64 |
SQL Server エージェント サービスの起動時にを実行します。 |
128 |
コンピューターがアイドル状態のときに実行します。 |
[ @freq_interval = ] frequency_interval
ジョブを実行する日を指定します。 @freq_interval は int で、既定値は であり、次の 0
表に示すように 、@freq_type の値によって異なります。
値 | 効果 |
---|---|
1 (1 回) |
@freq_interval は使用されません。 |
4 (毎日) |
@freq_interval日ごと。 |
8 (毎週) |
@freq_interval は、次の 1 つ以上です (論理演算子と OR 組み合わせます)。1 = 日曜日 2 = 月曜日 4 = 火曜日 8 = 水曜日 16 = 木曜日 32 = 金曜日 64 = 土曜日 |
16 (月単位) |
月の @freq_interval 日。 |
32 (月単位の相対) |
@freq_interval は次のいずれかです。 1 = 日曜日 2 = 月曜日 3 = 火曜日 4 = 水曜日 5 = 木曜日 6 = 金曜日 7 = 土曜日 8 = 日 9 = 平日 10 = 週末 |
64 (SQL Server エージェント サービスの開始時) |
@freq_interval は使用されません。 |
128 |
@freq_interval は使用されません。 |
[ @freq_subday_type = ] frequency_subday_type
@freq_subday_intervalの単位を指定します。 @freq_subday_type は int で、既定値はありません。次のいずれかの値を指定できます。
値 | 説明 (単位) |
---|---|
0x1 |
指定した時刻 |
0x2 |
秒 |
0x4 |
分 |
0x8 |
時間 |
[ @freq_subday_interval = ] frequency_subday_interval
ジョブの各実行の間に発生する @freq_subday_type 期間の数。 @freq_subday_interval は int で、既定値は 0
です。
[ @freq_relative_interval = ] frequency_relative_interval
さらに、 @freq_type が に設定されている場合 の@freq_interval を 32
定義します (月単位の相対)。
@freq_relative_interval は int で、既定値はありません。次のいずれかの値を指定できます。
値 | 説明 (単位) |
---|---|
1 |
First |
2 |
Second |
4 |
Third |
8 |
4 番目 |
16 |
Last (最後へ) |
@freq_relative_interval は、間隔の発生を示します。 たとえば、 @freq_relative_interval が に 2
設定 されている場合、@freq_type が に 32
設定され、 @freq_interval が に 3
設定されている場合、スケジュールされたジョブは毎月第 2 火曜日に発生します。
[ @freq_recurrence_factor = ] frequency_recurrence_factor
ジョブのスケジュールされた実行の間の週または月数。 @freq_recurrence_factorは、@freq_type が 、、16
または 32
に8
設定されている場合にのみ使用されます。 @freq_recurrence_factor は int で、既定値は 0
です。
[ @active_start_date = ] active_start_date
ジョブの実行を開始できる日付。 @active_start_date は int で、既定値はありません。 日付は として yyyyMMdd
書式設定されます。 @active_start_dateが設定されている場合、日付は 以上19900101
である必要があります。
スケジュールが作成されたら、開始日を確認し、正しい日付であることを確認します。 詳細については、「 スケジュールの作成とジョブへのアタッチ」の「開始日のスケジュール」セクションを参照してください。
[ @active_end_date = ] active_end_date
ジョブの実行を停止できる日付。 @active_end_date は int で、既定値はありません。 日付は として yyyyMMdd
書式設定されます。
[ @active_start_time = ] active_start_time
ジョブの実行を開始する @active_start_date から @active_end_date までの任意の日の時間。 @active_start_time は int で、既定値はありません。 時刻は 24 時間制として HHmmss
書式設定されます。
[ @active_end_time = ] active_end_time
ジョブの実行を終了する active_start_date から@active_end_dateまでの任意 の 日の時間。 @active_end_time は int で、既定値はありません。 時刻は 24 時間制として HHmmss
書式設定されます。
[ @schedule_id = ] schedule_id OUTPUT
スケジュールが正常に作成された場合は、スケジュールに割り当てられた識別番号をスケジュールします。 @schedule_id は int 型の出力変数であり、既定値はありません。
[ @schedule_uid = ] _schedule_uid OUTPUT
スケジュールの一意識別子を指定します。 @schedule_uid は uniqueidentifier 型の変数です。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
[なし] :
解説
ジョブ スケジュールをジョブとは別に管理できるようになりました。 ジョブにスケジュールを追加するには、 を使用 sp_add_schedule
してスケジュールを作成し、 sp_attach_schedule
スケジュールをジョブにアタッチします。
アクセス許可
このストアド プロシージャは、 db_owner ロールによって所有されます。 EXECUTE アクセス許可は任意のユーザーに付与できますが、これらのアクセス許可はSQL Serverアップグレード中にオーバーライドされる可能性があります。
他のユーザーには、データベース内の次のSQL Server エージェント固定データベース ロールのいずれかを付与するmsdb
必要があります。
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。
例
次の例では、毎週土曜日の午前 2 時に実行される に SaturdayReports
ジョブ スケジュールを割り当てます。
EXEC msdb.dbo.sp_add_jobschedule
@job_name = N'SaturdayReports', -- Job name
@name = N'Weekly_Sat_2AM', -- Schedule name
@freq_type = 8, -- Weekly
@freq_interval = 64, -- Saturday
@freq_recurrence_factor = 1, -- every week
@active_start_time = 20000 -- 2:00 AM