sp_attach_schedule (Transact-SQL)
適用対象: SQL サーバー
ジョブのスケジュールを設定します。
構文
sp_attach_schedule
[ [ @job_id = ] 'job_id' ]
[ , [ @job_name = ] N'job_name' ]
[ , [ @schedule_id = ] schedule_id ]
[ , [ @schedule_name = ] N'schedule_name' ]
[ , [ @automatic_post = ] automatic_post ]
[ ; ]
引数
[ @job_id = ] 'job_id'
スケジュールが追加されるジョブのジョブ識別番号。 @job_id は uniqueidentifier で、既定値は NULL
です。
@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。
[ @job_name = ] N'job_name'
スケジュールが追加されるジョブの名前。 @job_name は sysname で、既定値は NULL
です。
@job_idまたは@job_nameを指定する必要がありますが、両方を指定することはできません。
[ @schedule_id = ] schedule_id
ジョブに設定するスケジュールの識別番号を指定します。 @schedule_id は int で、既定値は NULL
です。
@schedule_idまたは@schedule_nameを指定する必要がありますが、両方を指定することはできません。
[ @schedule_name = ] N'schedule_name'
ジョブに設定するスケジュールの名前を指定します。 @schedule_name は sysname で、既定値は NULL
です。
@schedule_idまたは@schedule_nameを指定する必要がありますが、両方を指定することはできません。
[ @automatic_post = ] automatic_post
@automatic_post は ビットで、既定値は 1
です。
解説
スケジュールとジョブの所有者は同じである必要があります。
スケジュールは複数のジョブに対して設定できます。 ジョブは複数のスケジュールで実行できます。
このストアド プロシージャは、 msdb
データベースから実行する必要があります。
アクセス許可
このストアド プロシージャは、 db_owner ロールによって所有されています。 EXECUTE
アクセス許可は任意のユーザーに付与できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。
他のユーザーには、msdb
データベース内の次SQL Server エージェント固定データベース ロールのいずれかを付与する必要があります。
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
ジョブ所有者は、スケジュール所有者である必要なく、ジョブをスケジュールにアタッチし、スケジュールからジョブをデタッチできます。 ただし、呼び出し元がスケジュール所有者でない限り、デタッチによってジョブが残らない場合は、スケジュールを削除できません。
これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。
SQL Server は、ユーザーがジョブとスケジュールの両方を所有しているかどうかを確認します。
例
次の例では、 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