?

Log in

No account? Create an account

Entries by category: it

Ремонт SQL SERVER: Error 14274: Cannot add, update, or delete a job (or its steps or schedules) ...
work
master_yeti
Хотя я самоидентифицируюсь как копирайтер, но помимо копирайтинга и рерайтинга вечерами, приходится заниматься и работой в офисе. А в офисе я ведь одминко :).
И вот в силу своих должностных обязанностей работаю я со стареньким, но надёжным MS SQL Server 2000. А у старичка этого иногда возникает проблема: после переноса или переименования сервера возникают затыки с job'ами. При попытке изменить или удалить job возникает ошибка

Fix : Error 14274: Cannot add, update, or delete a job (or its steps or schedules) that originated from an MSX server. The job was not saved.

Звучит страшно, но на самом деле дело пустяковое. Ошибка возникает по причине ошибки в имени сервера, которое хранится в самом MS SQL Server. Вариантов решения этой задачи два:
I. Рекомендации Microsoft
1) Задайте первоначальное имя сервера (до переезда/переименования)
2) Сохраните job'ы в скриптах.
3) Переименуйте сервер в новое имя.
4) Выполните сохранённые скрипты для восстановления job'ов.

Этот вариант простой, но мне он не помог. Поэтому я ещё немного погуглил и нашёл другие рекомендации на одном из многочисленных форумов. 
II. Рекомендации опытного индуса.
1) В Query Analyzer запустите следующий скрипт для проверки:
  
SELECT @@servername
    Для того, чтобы убедиться в актуальности имени сервера в базе MS SQL
2) Если значение не верное, то выполняем следующие действия:

sp_dropserver <'неверное_имя_сервера'>

а потом:
sp_addserver <'правильное_имя_сервера'>, 'local'

для того, чтобы заменить имя сервера на актуальное.
3) Потом нужно рестартануть SQL и проверить всё ли получилось.
4) Если всё получилось, то проверим корректность джобов путём проверки поля check the originating_server в таблице msdb..sysjobs путём запуска следующего скрипта:
SELECT *
FROM msdb..sysjobs

после отработки скрипта вы получите таблицу со списком job'ов и их параметрами, проверьте в этой таблице значения имени сервера на предмет их корректного обновления.
Если какие-то из них не обновились, то запустите следующий скрипт:

USE msdb
GO
DECLARE @server sysname
SET @server = CAST(SERVERPROPERTY('
правильное_имя_сервера')AS sysname)
UPDATE sysjobs
SET originating_server = @server
WHERE originating_server = '<
неверное_имя_сервера>'

 Выполнение одной из этих двух комбинаций действий обязательно должно вам помочь :)