sp_add_schedule (Transact-SQL)
適用対象: SQL Server Azure SQL Managed Instance
任意の数のジョブで使用できるスケジュールを作成します。
構文
sp_add_schedule
[ @schedule_name = ] 'schedule_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 = ] 'owner_login_name' ]
[ , [ @schedule_uid = ] schedule_uid OUTPUT ]
[ , [ @schedule_id = ] schedule_id OUTPUT ]
[ , [ @originating_server = ] server_name ] /* internal */
[ ; ]
引数
[ @schedule_name = ] 'schedule_name'
スケジュールの名前です。 @schedule_name は sysname で、既定値はありません。
[ @enabled = ] enabled
スケジュールの現在の状態を示します。 @enabled は tinyint で、既定値は 1
(有効) です。 0
場合、スケジュールは有効になりません。 スケジュールが有効になっていない場合、このスケジュールではジョブは実行されません。
[ @freq_type = ] freq_type
ジョブを実行するタイミングを示す値。 @freq_type は int で、既定値は 0
で、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
1 |
1 回。 |
4 |
毎日 |
8 |
週単位 |
16 |
月単位 |
32 |
月単位( @freq_intervalに対する相対値) |
64 |
SQL Server エージェント サービスの起動時に実行する |
128 |
コンピューターがアイドル状態のときに実行されます ( Azure SQL Managed Instance ではサポートされていません) |
[ @freq_interval = ] @freq_interval
ジョブが実行される日数。 @freq_interval は int で、既定値は 1
で、 @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 (SQLServerAgent サービスの起動時) |
@freq_interval は使用されません。 |
128 |
@freq_interval は使用されません。 |
[ @freq_subday_type = ] freq_subday_type
@freq_subday_intervalの単位を指定します。 @freq_subday_type は int で、既定値は 0
で、これらの値のいずれかを指定できます。
Value | 説明 (単位) |
---|---|
0x1 |
指定した時刻 |
0x2 |
秒 |
0x4 |
分 |
0x8 |
時間 |
[ @freq_subday_interval = ] freq_subday_interval
ジョブの各実行の間に発生する @freq_subday_type 期間の数。 @freq_subday_interval は int で、既定値は 0
です。 間隔は 10 秒以上である必要があります。 @freq_subday_typeが1
と等しい場合、@freq_subday_intervalは無視されます。
[ @freq_relative_interval = ] freq_relative_interval
@freq_intervalが 32 (毎月の相対) の場合、ジョブの毎月の@freq_intervalの発生。 @freq_relative_interval は int で、既定値は 0
で、次のいずれかの値を指定できます。 @freq_typeが 32 に等しくない場合、@freq_relative_intervalは無視されます。
Value | 説明 (単位) |
---|---|
1 |
最初 |
2 |
Second |
4 |
Third |
8 |
4 番目 |
16 |
最後 |
[ @freq_recurrence_factor = ] freq_recurrence_factor
ジョブのスケジュールされた実行の間の週数または月数。 @freq_recurrence_factor は、 @freq_type が 8
、 16
、または 32
されている場合にのみ使用されます。 @freq_recurrence_factor は int で、既定値は 0
です。
[ @active_start_date = ] active_start_date
ジョブの実行を開始できる日付。 @active_start_date は int で、既定値は NULL
で、今日の日付を示します。 日付は yyyyMMdd
として書式設定されます。 @active_start_dateがNULL
されていない場合、日付は19900101以上である必要があります。
スケジュールが作成されたら、開始日を確認し、正しい日付であることを確認します。 詳細については、「 ジョブへのスケジュールの作成とアタッチ」の「開始日のスケジュール設定」セクションを参照してください。
週単位または月単位のスケジュールの場合、エージェントは @active_start_date が過去の場合は無視し、代わりに現在の日付を使用します。 sp_add_schedule
を使用してSQL Server エージェント スケジュールを作成する場合は、ジョブの実行が開始される日付であるパラメーター @active_start_dateを指定するオプションがあります。 スケジュールの種類が週単位または月単位で、 @active_start_date パラメーターが過去の日付に設定されている場合、 @active_start_date パラメーターは無視され、現在の日付が @active_start_dateに使用されます。
[ @active_end_date = ] active_end_date
ジョブの実行を停止できる日付。 @active_end_date は int で、既定値は 99991231
で、9999 年 12 月 31 日を示します。 yyyyMMdd
として書式設定されます。
[ @active_start_time = ] active_start_time
ジョブの実行を開始する @active_start_date から @active_end_date までの任意の日の時刻。 @active_start_time は int で、既定値は 000000
で、24 時間制で午前 12 時 00 分を示し、フォーム HHmmss
を使用して入力する必要があります。
[ @active_end_time = ] active_end_time
ジョブの実行を終了する @active_start_date から @active_end_date までの任意の日の時刻。 @active_end_time は int で、既定値は 235959
で、24 時間制の午後 11 時 59 分 59 分を示し、フォーム HHmmss
を使用して入力する必要があります。
[ @owner_login_name = ] 'owner_login_name'
スケジュールを所有するサーバー プリンシパルの名前。 @owner_login_name は sysname で、既定値は NULL
で、スケジュールが作成者によって所有されていることを示します。
[ @schedule_uid = ] schedule_uid OUTPUT
スケジュールの一意識別子を指定します。 @schedule_uid は、uniqueidentifier 型の変数です。
[ @schedule_id = ] schedule_id OUTPUT
スケジュールの識別子。 @schedule_id は、 int 型の変数です。
[ @originating_server = ] server_name
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
ありません。
解説
SQL Server Management Studio は、簡単かつ直観的な方法でジョブを管理するためのツールで、ジョブ体系の作成および管理に最適です。
アクセス許可
このストアド プロシージャは、 db_owner ロールによって所有されています。 EXECUTE
アクセス許可は任意のユーザーに付与できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。
他のユーザーには、msdb
データベース内の次SQL Server エージェント固定データベース ロールのいずれかを付与する必要があります。
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。
例
A. スケジュールを作成する
次の例では、 RunOnce
という名前のスケジュールを作成します。 スケジュールは 1 回のみ、スケジュールが作成された日の 23:30
に実行されます。
USE msdb;
GO
EXEC dbo.sp_add_schedule
@schedule_name = N'RunOnce',
@freq_type = 1,
@active_start_time = 233000;
GO
B. スケジュールを作成し、スケジュールを複数のジョブにアタッチする
次の例では、 NightlyJobs
という名前のスケジュールを作成します。 このスケジュールを使用するジョブは、毎日、サーバーの時間が 01:00
になると実行されます。 この例では、ジョブ BackupDatabase
とジョブ RunReports
にスケジュールをアタッチします。
Note
この例では、ジョブ BackupDatabase
とジョブ RunReports
が既に存在することを前提としています。
USE msdb;
GO
EXEC sp_add_schedule
@schedule_name = N'NightlyJobs',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 010000;
GO
EXEC sp_attach_schedule
@job_name = N'BackupDatabase',
@schedule_name = N'NightlyJobs';
GO
EXEC sp_attach_schedule
@job_name = N'RunReports',
@schedule_name = N'NightlyJobs';
GO