sp_delete_schedule (Transact-SQL)
適用対象: SQL サーバー
スケジュールを削除します。
構文
sp_delete_schedule
[ [ @schedule_id = ] schedule_id ]
[ , [ @schedule_name = ] N'schedule_name' ]
[ , [ @force_delete = ] force_delete ]
[ , [ @automatic_post = ] automatic_post ]
[ ; ]
引数
[ @schedule_id = ] schedule_id
削除するスケジュールのスケジュール ID 番号。 @schedule_id は int で、既定値は NULL
です。
@schedule_idまたは@schedule_nameを指定する必要がありますが、両方を指定することはできません。
[ @schedule_name = ] N'schedule_name'
削除するスケジュールの名前を指定します。 @schedule_name は sysname で、既定値は NULL
です。
@schedule_idまたは@schedule_nameを指定する必要がありますが、両方を指定することはできません。
[ @force_delete = ] force_delete
スケジュールがジョブに関連付けられている場合にプロシージャを失敗させるかどうかを指定します。 @force_delete は bit で、既定値は 0
です。
- @force_deleteが
0
されると、スケジュールがジョブにアタッチされている場合、ストアド プロシージャは失敗します。 - @force_deleteが
1
されると、スケジュールがジョブにアタッチされているかどうかに関係なく、スケジュールは削除されます。
[ @automatic_post = ] automatic_post
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
ありません。
解説
既定では、スケジュールがジョブにアタッチされている場合、スケジュールを削除することはできません。 ジョブにアタッチされているスケジュールを削除するには、@force_deleteの1
の値を指定します。 スケジュールを削除しても、現在実行中のジョブは停止しません。
アクセス許可
このストアド プロシージャは、 db_owner ロールによって所有されています。 EXECUTE
アクセス許可は任意のユーザーに付与できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。
他のユーザーには、msdb
データベース内の次SQL Server エージェント固定データベース ロールのいずれかを付与する必要があります。
- 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