sp_add_jobschedule (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

SQL Server エージェント ジョブのスケジュールを作成します。

Transact-SQL 構文表記規則

重要

現在、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_iduniqueidentifier であり、既定値はありません。

@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。

[ @job_name = ] N'job_name'

スケジュールが追加されるジョブの名前。 @job_namenvarchar(128)で、既定値はありません。

@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。

[ @name = ] N'name'

スケジュールの名前。 namenvarchar(128)で、既定値はありません。

[ @enabled = ] enabled_flag

スケジュールの現在の状態を示します。 @enabledtinyint で、既定値は 1 (有効) です。 の場合 0、スケジュールは有効になっていません。 スケジュールが無効になっている場合、ジョブは実行されません。

[ @freq_type = ] frequency_type

いつジョブを実行するかを示す値を指定します。 @freq_typeint で、既定値は 0で、次のいずれかの値を指定できます。

説明
1 1 度
4 毎日
8 週単位
16 月単位
32 月単位( freq_intervalに対する相対値)。
64 SQL Server エージェント サービスの起動時にを実行します。
128 コンピューターがアイドル状態のときに実行します。

[ @freq_interval = ] frequency_interval

ジョブを実行する日を指定します。 @freq_intervalint で、既定値は であり、次の 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_typeint で、既定値はありません。次のいずれかの値を指定できます。

説明 (単位)
0x1 指定した時刻
0x2
0x4
0x8 時間

[ @freq_subday_interval = ] frequency_subday_interval

ジョブの各実行の間に発生する @freq_subday_type 期間の数。 @freq_subday_intervalint で、既定値は 0です。

[ @freq_relative_interval = ] frequency_relative_interval

さらに、 @freq_type が に設定されている場合 の@freq_interval32 定義します (月単位の相対)。

@freq_relative_intervalint で、既定値はありません。次のいずれかの値を指定できます。

説明 (単位)
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または 328設定されている場合にのみ使用されます。 @freq_recurrence_factorint で、既定値は 0です。

[ @active_start_date = ] active_start_date

ジョブの実行を開始できる日付。 @active_start_dateint で、既定値はありません。 日付は として yyyyMMdd書式設定されます。 @active_start_dateが設定されている場合、日付は 以上19900101である必要があります。

スケジュールが作成されたら、開始日を確認し、正しい日付であることを確認します。 詳細については、「 スケジュールの作成とジョブへのアタッチ」の「開始日のスケジュール」セクションを参照してください。

[ @active_end_date = ] active_end_date

ジョブの実行を停止できる日付。 @active_end_dateint で、既定値はありません。 日付は として yyyyMMdd書式設定されます。

[ @active_start_time = ] active_start_time

ジョブの実行を開始する @active_start_date から @active_end_date までの任意の日の時間。 @active_start_timeint で、既定値はありません。 時刻は 24 時間制として HHmmss 書式設定されます。

[ @active_end_time = ] active_end_time

ジョブの実行を終了する active_start_date から@active_end_dateまでの任意 日の時間。 @active_end_timeint で、既定値はありません。 時刻は 24 時間制として HHmmss 書式設定されます。

[ @schedule_id = ] schedule_id OUTPUT

スケジュールが正常に作成された場合は、スケジュールに割り当てられた識別番号をスケジュールします。 @schedule_idint 型の出力変数であり、既定値はありません。

[ @schedule_uid = ] _schedule_uid OUTPUT

スケジュールの一意識別子を指定します。 @schedule_uiduniqueidentifier 型の変数です。

リターン コードの値

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

こちらもご覧ください