sp_attach_schedule (Transact-SQL)

適用対象:SQL Server

ジョブのスケジュールを設定します。

Transact-SQL 構文表記規則

構文

  
sp_attach_schedule  
     { [ @job_id = ] job_id | [ @job_name = ] 'job_name' } ,   
     { [ @schedule_id = ] schedule_id   
     | [ @schedule_name = ] 'schedule_name' }  

引数

[ @job_id = ] job_id スケジュールが追加されるジョブのジョブ識別番号。 job_iduniqueidentifier で、既定値は NULL です。

[ @job_name = ] 'job_name' スケジュールが追加されるジョブの名前。 job_namesysname で、既定値は NULL です。

Note

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

[ @schedule_id = ] schedule_id ジョブに設定するスケジュールのスケジュール ID 番号。 schedule_idは int で、既定値は NULL です。

[ @schedule_name = ] 'schedule_name' ジョブに設定するスケジュールの名前。 schedule_namesysname で、既定値は NULL です。

Note

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

解説

スケジュールとジョブの所有者は同じである必要があります。

スケジュールは複数のジョブに対して設定できます。 ジョブは、複数のスケジュールで実行できます。

このストアド プロシージャは 、msdb データベースから実行する必要があります。

アクセス許可

既定では、このストアド プロシージャを実行できるのは、 sysadmin 固定サーバー ロールのメンバーです。 他のユーザーには、 SQL Server msdb データベースの次のいずれかの エージェント固定データベース ロールが許可されている必要があります。

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

ジョブ所有者は、スケジュール所有者である必要なく、ジョブをスケジュールにアタッチし、スケジュールからジョブをデタッチできることに注意してください。 ただし、呼び出し元がスケジュール所有者でない限り、デタッチによってジョブが残されない場合は、スケジュールを削除できません。

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

SQL Serverは、ユーザーがジョブとスケジュールの両方を所有しているかどうかを確認します。

次の例では、 という名前 NightlyJobsのスケジュールを作成します。 このスケジュールを使用するジョブは、毎日、サーバーの時間が 01:00 になると実行されます。 この例では、スケジュールをジョブとジョブ BackupDatabase にアタッチします RunReports

Note

この例では、ジョブとジョブBackupDatabaseRunReportsが既に存在することを前提としています。

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  

参照

sp_add_schedule (Transact-SQL)
sp_detach_schedule (Transact-SQL)
sp_delete_schedule (Transact-SQL)