Мне нужно отключить все задания, выполняемые на сервере. Я побежал следующий код:Задания агента SQL Server работают, хотя я отключил расписание в сценарии
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 или через SQL, я могу видеть график отключен. Тем не менее, задания все еще работают, и я могу видеть даты следующего запуска в будущем, если я проверю msdb.dbo.sysjobschedules.
Единственные вещи, которые я видел в Интернете, показывают, что есть фоновый поток, который необходимо обновить, чтобы поднять это изменение? И для этого мне нужно запустить sp_sqlagent_refresh_job (не помогло) или перезапустить сервер.
Я могу перезапустить сервер, но мне любопытно, если кто-либо еще видел это поведение, знает причину, знает, как исправить это по-другому.
Это хорошее решение, спасибо. Мне в основном интересно, что я пропустил, что приводит к тому, что графики продолжают работать. Интересно, удалил ли я следующую дату выполнения из msdb.dbo.sysjobschedules, что бы это сделать? – Quicksilver
Вы были на правильном пути, есть одна заметка об этой таблице: она обновляется каждые 20 минут. Поэтому, если вы отключили расписания в sysschedules, sysjobschedules будут обновляться через следующие 20 минут, поэтому вы не сможете сразу увидеть изменения расписаний работы. – gofr1
И даже если вы отключите расписания, будут запускаться задания, начатые ранее. Чтобы остановить их, используйте sp_stop_job. – gofr1