次の方法で共有


sp_delete_schedule (Transact-SQL)

適用対象: SQL サーバー

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

Transact-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_idint で、既定値は NULL です。

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

[ @schedule_name = ] N'schedule_name'

削除するスケジュールの名前を指定します。 @schedule_namesysname で、既定値は NULL です。

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

[ @force_delete = ] force_delete

スケジュールがジョブに関連付けられている場合にプロシージャを失敗させるかどうかを指定します。 @force_deletebit で、既定値は 0 です。

  • @force_delete0されると、スケジュールがジョブにアタッチされている場合、ストアド プロシージャは失敗します。
  • @force_delete1されると、スケジュールがジョブにアタッチされているかどうかに関係なく、スケジュールは削除されます。

[ @automatic_post = ] automatic_post

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

リターン コードの値

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

結果セット

ありません。

解説

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

アクセス許可

このストアド プロシージャは、 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