sp_detach_schedule (Transact-SQL)
適用対象: SQL Server
スケジュールとジョブ間の関連付けを削除します。
構文
sp_detach_schedule
[ [ @job_id = ] 'job_id' ]
[ , [ @job_name = ] N'job_name' ]
[ , [ @schedule_id = ] schedule_id ]
[ , [ @schedule_name = ] N'schedule_name' ]
[ , [ @delete_unused_schedule = ] delete_unused_schedule ]
[ , [ @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を指定する必要がありますが、両方を指定することはできません。
[ @delete_unused_schedule = ] delete_unused_schedule
未使用のジョブ スケジュールを削除するかどうかを指定します。 @delete_unused_schedule は ビットで、既定値は 0
です。つまり、ジョブがそれらを参照していない場合でも、すべてのスケジュールが保持されます。 1
に設定すると、未使用のジョブ スケジュールは、参照するジョブがない場合に削除されます。
[ @automatic_post = ] automatic_post
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
なし。
アクセス許可
この手順では EXECUTE
アクセス許可を付与できますが、これらのアクセス許可は SQL Server のアップグレード中にオーバーライドされる可能性があります。
他のユーザーには、msdb
データベース内の次SQL Server エージェント固定データベース ロールのいずれかを付与する必要があります。
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
ジョブ所有者は、スケジュール所有者である必要なく、ジョブをスケジュールにアタッチし、スケジュールからジョブをデタッチできます。 ただし、呼び出し元がスケジュール所有者でない限り、デタッチによってジョブが残らない場合、スケジュールを削除することはできません。
これらのロールの権限の詳細については、「 SQL Server エージェントの固定データベース ロール」を参照してください。
SQL Server は、ユーザーがスケジュールを所有しているかどうかを確認します。 sysadmin固定サーバー ロールのメンバーのみが、別のユーザーが所有するジョブからスケジュールをデタッチできます。
例
次の例では、 NightlyJobs
スケジュールと BackupDatabase
ジョブの間の関連付けを削除します。
USE msdb;
GO
EXEC dbo.sp_detach_schedule
@job_name = 'BackupDatabase',
@schedule_name = 'NightlyJobs';
GO