2

サーバー上で実行されているすべてのジョブを無効にする必要があります。次のコードを実行しました。

   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 を実行する (役に立たなかった) か、サーバーを再起動する必要があります。

サーバーを再起動できますが、他の誰かがこの動作を見て、原因を知っていて、別の方法で修正する方法を知っているかどうかに興味があります.

4

1 に答える 1