sp_delete_schedule (Transact-SQL)

適用対象:SQL Server

スケジュールを削除します。

Transact-SQL 構文表記規則

構文

  
sp_delete_schedule { [ @schedule_id = ] schedule_id | [ @schedule_name = ] 'schedule_name' } ,  
     [ @force_delete = ] force_delete  

引数

[ @schedule_id = ] schedule_id 削除するスケジュールのスケジュール ID 番号。 schedule_idint で、既定値は NULL です。

注意

schedule_idまたはschedule_nameを指定する必要がありますが、どちらも指定できません。

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

注意

schedule_idまたはschedule_nameを指定する必要がありますが、どちらも指定できません。

[ @force_delete = ] force_delete スケジュールがジョブにアタッチされている場合にプロシージャを失敗させるかどうかを指定します。 Force_delete はビットであり、既定値は 0 ですforce_delete0 の場合、スケジュールがジョブにアタッチされている場合、ストアド プロシージャは失敗します。 force_delete1 の場合、スケジュールがジョブにアタッチされているかどうかに関係なく、スケジュールは削除されます。

リターン コードの値

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

結果セット

なし

解説

既定では、スケジュールがジョブにアタッチされている場合、スケジュールを削除できません。 ジョブにアタッチされているスケジュールを削除するには、force_delete値 1 を指定します。 スケジュールを削除しても、現在実行中のジョブは停止されません。

アクセス許可

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

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

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

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

sysadmin ロールのメンバーのみが、別のユーザーが所有するジョブ スケジュールを削除できます。

A. スケジュールを削除する

次の例では、スケジュール NightlyJobsを削除します。 スケジュールがジョブにアタッチされている場合、この例ではスケジュールは削除されません。

USE msdb ;  
GO  
  
EXEC dbo.sp_delete_schedule  
    @schedule_name = N'NightlyJobs' ;  
GO  

B. ジョブにアタッチされているスケジュールの削除

次の例では、スケジュールがジョブに関連付けられているかどうかに関係なく、スケジュール RunOnce を削除します。

USE msdb ;  
GO  
  
EXEC dbo.sp_delete_schedule  
    @schedule_name = 'RunOnce',  
    @force_delete = 1;  
GO  

参照

ジョブの実装
sp_add_schedule (Transact-SQL)