sp_update_schedule (Transact-SQL)

適用対象:SQL Server

SQL Server エージェント スケジュールの設定を変更します。

Transact-SQL 構文表記規則

構文

sp_update_schedule
    [ [ @schedule_id = ] schedule_id ]
    [ , [ @name = ] N'name' ]
    [ , [ @new_name = ] N'new_name' ]
    [ , [ @enabled = ] enabled ]
    [ , [ @freq_type = ] freq_type ]
    [ , [ @freq_interval = ] freq_interval ]
    [ , [ @freq_subday_type = ] freq_subday_type ]
    [ , [ @freq_subday_interval = ] freq_subday_interval ]
    [ , [ @freq_relative_interval = ] freq_relative_interval ]
    [ , [ @freq_recurrence_factor = ] freq_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 ]
    [ , [ @owner_login_name = ] N'owner_login_name' ]
    [ , [ @automatic_post = ] automatic_post ]
[ ; ]

引数

[ @schedule_id = ] schedule_id

変更するスケジュールの識別子を指定します。 @schedule_idは int で、既定値は NULL.

@schedule_idまたは@name指定する必要があります。

[ @name = ] N'name'

変更するスケジュールの名前。 @nameは sysname で、既定値は NULL.

@schedule_idまたは@name指定する必要があります。

[ @new_name = ] N'new_name'

スケジュールの新しい名前。 @new_nameは sysname で、既定値は NULL. @new_nameが NULL の場合、スケジュールの名前は変更されません。

[ @enabled = ] が有効

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

[ @freq_type = ] freq_type

ジョブを実行するタイミングを示す値。 @freq_typeは int であり、これらの値のいずれかになります。

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

[ @freq_interval = ] freq_interval

ジョブが実行される日数。 @freq_intervalは int で、既定値は 、次の0表に示すように@freq_type値によって異なります。

@freq_typeの @freq_intervalへの 影響
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 = ] freq_subday_type

@freq_subday_intervalの単位を指定します。 @freq_subday_typeは int であり、これらの値のいずれかになります。

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

[ @freq_subday_interval = ] freq_subday_interval

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

[ @freq_relative_interval = ] freq_relative_interval

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

@freq_relative_intervalは int であり、これらの値のいずれかになります。

Value 説明 (単位)
1 First
2 Second
4 Third
8 4 番目
16 末尾

@freq_relative_intervalは、間隔の発生を示します。 たとえば、@freq_relative_intervalが 、@freq_typeに設定232され、@freq_intervalが設定3されている場合、スケジュールされたジョブは毎月第 2 火曜日に実行されます。

[ @freq_recurrence_factor = ] freq_recurrence_factor

ジョブのスケジュールされた実行の間の週数または月数。 @freq_recurrence_factorは int で、既定値は 0. @freq_recurrence_factorは、@freq_typeが 、16または 32> に8設定されている場合にのみ使用されます。

[ @active_start_date = ] active_start_date

ジョブの実行を開始できる日付。 @active_start_dateは int で、既定値は NULL. 日付は次のように yyyyMMdd書式設定されます。 @active_start_dateが設定されている場合、日付は次の値以上19900101である必要があります。

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

[ @active_end_date = ] active_end_date

ジョブの実行を停止できる日付。 @active_end_dateは int で、既定値は 99991231. 日付は次のように yyyyMMdd書式設定されます。

[ @active_start_time = ] active_start_time

ジョブの実行を開始する@active_start_dateから@active_end_dateまでの任意の日の時刻。 @active_start_timeは int で、既定値は 000000. 時刻は 24 時間制で HHmmss 書式設定されます。

[ @active_end_time = ] active_end_time

ジョブの実行を終了するactive_start_dateから@active_end_dateまでの任意の日の時刻。 @active_end_timeは int で、既定値は 235959. 時刻は 24 時間制で HHmmss 書式設定されます。

[ @owner_login_name = ] N'owner_login_name'

スケジュールを所有するサーバー プリンシパルの名前。 @owner_login_nameは sysname で、既定値はNULL作成者がスケジュールを所有していることを示します。

[ @automatic_post = ] automatic_post

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

スケジュールを使用するすべてのジョブは、すぐに新しい設定を使用します。 ただし、スケジュールを変更しても、現在実行中のジョブは停止しません。

アクセス許可

このストアド プロシージャは、db_owner ロールによって所有されています。 任意のユーザーにアクセス許可を付与 EXECUTE できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。

他のユーザーには、データベース内の固定データベース ロールSQL Server エージェント次のいずれかを付与するmsdb必要があります。

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。

sysadmin のメンバーのみが、別のユーザーが所有するスケジュールを変更できます。

次の例では、スケジュールの有効な状態をNightlyJobs0変更し、所有者terridを .

USE msdb;
GO

EXEC dbo.sp_update_schedule
    @name = 'NightlyJobs',
    @enabled = 0,
    @owner_login_name = 'terrid';
GO