Информационные технологии
c 2007 года
 

MS SQL - ошибка удаления задания (ошибка 547)

01.11.2023
Думаю каждый, кто начинает работать с планами обслуживания в Microsoft SQL сервере, столкнётся с ошибкой при удалении ненужного вам плана.
И звучит она примерно так: 
Действие Удалить завершилось неудачно для объекта Задание
Конфликт инструкции DELETE с ограничением REFERENCE ... (ошибка: 547)


Эту проблему мы с вами и будем решать.

Итак, проблема неочевидна, на скриншоте страшноватые надписи с наименованием таблиц и каких-то параметров, ничего не понятно, а удалить план хочется.
Сама ошибка выглядит примерно так:

84651384313.JPG

Вкратце: Действие Удалить завершилось неудачно для объекта Задание
Конфликт инструкции DELETE с ограничением REFERENCE ... (ошибка: 547)

Для удаления данного задания нам понадобится открыть шелл MS SQL сервера, где мы сможем выполнять команды. Для этого закрываем окна с ошибкой и кликаем на верхней панели "Создать запрос":

2248646513.JPG

В правой части у нас появляется форма, где мы вводим следующую команду:
select * from msdb.dbo.sysmaintplan_plans

И нажимаем сверху на кнопку "Выполнить":

84635418643.JPG

После нажатия на кнопку "Выполнить", снизу окна у нас появится информация о текущих планах обслуживания и будет столбец с указанием ID каждого плана, он нам и нужен:

1145465135.JPG

В списке мы находим название того, плана, что мы хотим удалить и видим его ID, в нашем случае это задание под номером 2 с ID: A3550947-8DDC-4D25-8E97-05DC17FB53DC. Копируем этот ID и формируем следующую команду в шелле SQL, предыдущую команду удаляем.
Получаем примерно следующее:

delete from msdb.dbo.sysmaintplan_subplans where plan_id = 'A3550947-8DDC-4D25-8E97-05DC17FB53DC'

Где в конце команды в кавычки мы вставляем скопированный ID. Нажимаем кнопку "Выполнить", снизу окна появится надпись "Запрос успешно выполнен". Отлично.
Ну и для положительного решения нашего вопроса выполняем второй и последний запрос в шелле (не забываем удалять предыдущую команду):

delete from msdb.dbo.sysmaintplan_plans where id = 'A3550947-8DDC-4D25-8E97-05DC17FB53DC'

Опять жмём "Выполнить" и опять должны увидеть надпись "Запрос успешно выполнен". 
Отлично. Теперь мы спокойно можем удалить наше задание без всяких ошибок!

Напоследок хочется отметить один момент: если задание создано через "Мастер планов обслуживания", то задания нужно удалять именно через каталог объектов "Управление" - "Планы обслуживания", в этом случае ошибки изначально не будет. Если же задание создавалось вручную, то, скорее всего, получите ошибку и решить её можно вышеприведённым методом.

На этом всё, удачи в администрировании!

Возврат к списку


Текст сообщения*
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений
 
X