サーバー上で実行されているすべてのジョブを無効にする必要があります。次のコードを実行しました。
declare @t table (schedule_id int, [name] varchar(300))
update msdb.dbo.sysschedules
set enabled = 0
output inserted.schedule_id, inserted.name into @t
from msdb.dbo.sysjobs j
join msdb.dbo.sysjobschedules js
on j.job_id = js.job_id
join msdb.dbo.sysschedules s
on js.schedule_id = s.schedule_id
where j.[name] not like 'DB -%' and j.[name] not like 'sys%' and j.[name] not like 'Maintenance%'
select * from @t
SQL エージェント GUI または SQL を使用して、特定のジョブとそれに関連付けられたスケジュールを確認すると、スケジュールが無効になっていることがわかります。ただし、ジョブはまだ実行されており、msdb.dbo.sysjobschedules を確認すると、将来の次の実行日を確認できます。
私がオンラインで見た唯一のことは、この変更を反映するために更新する必要があるバックグラウンド スレッドがあることを示唆していますか? それを行うには、sp_sqlagent_refresh_job を実行する (役に立たなかった) か、サーバーを再起動する必要があります。
サーバーを再起動できますが、他の誰かがこの動作を見て、原因を知っていて、別の方法で修正する方法を知っているかどうかに興味があります.