Error 14274 cannot add update or delete a job ошибка

July 15 2010, 10:49

Category:

  • IT
  • Cancel

Хотя я самоидентифицируюсь как копирайтер, но помимо копирайтинга и рерайтинга вечерами, приходится заниматься и работой в офисе. А в офисе я ведь одминко :).
И вот в силу своих должностных обязанностей работаю я со стареньким, но надёжным 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 = '<
неверное_имя_сервера>'

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

We use SSIS packages to import files. These SSIS packages are run with sqljobs. During deployment the sqljobs are created with a script. That is the plan.

While running the script to create the sqljobs we got an error:

Error 14274: Cannot add, update, or delete a job (or its steps or schedules) that originated from an MSX server

Image courtesy of jesadaphorn / FreeDigitalPhotos.net
Image courtesy of jesadaphorn / FreeDigitalPhotos.net

Most solutions found on the internet talk about the name of the server. When you’ve renamed your Sql Server (yeah right) then you need to update the originating_server column in the sysjobs. This was not the case for us.

Over at msdn someone suggested to look at the variables. The first create sqljob would set the @jobid variable and the second create statement would use that value as input, where it is intended as output. The suggested SET @jobid = NULL before each call to sp_add_job did the trick.

About erictummers

Working in a DevOps team is the best thing that happened to me. I like challenges and sharing the solutions with others.

On my blog I’ll mostly post about my work, but expect an occasional home project, productivity tip and tooling review.

This entry was posted in Development and tagged error, sqljob, sqlserver, ssis. Bookmark the permalink.

I’m trying to create a rather simple script for dealing with SQL Server Agent jobs. It performs 2 tasks:

1) If a given job exists, delete it
2) Create the job

(Due to business requirements I can’t modify an existing job, the script must delete & re-create it.)

Running the script the first time works fine (creates the job). Running any times after that produces error 14274 «Cannot add, update, or delete a job that originated from an MSX server.»

I’ve done lots of searching on this, and most solutions center around the server name being changed. My server name has not changed, nor has it ever.

Here’s what I have:

USE [msdb];

SET NOCOUNT ON;

DECLARE @JobName NVARCHAR(128);
DECLARE @ReturnCode INT;
declare @errCode INT;

SET @JobName = 'AJob';

BEGIN TRANSACTION;

DECLARE @jobId uniqueidentifier;

SET @jobId = (SELECT job_id from msdb.dbo.sysjobs where name = @JobName);

IF(@jobId IS NOT NULL) -- delete if it already exists
begin
   EXEC @ReturnCode = msdb.dbo.sp_delete_job @job_id=@jobId
   IF(@@ERROR <> 0 OR @ReturnCode <> 0)
    begin
        set @errCode = @@ERROR;
        GOTO QuitWithRollback;
    end
    print 'deleted job';   
end


-- create the job
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=@JobName,
        @enabled=1,
        @notify_level_eventlog=0, -- on failure
        @notify_level_email=0,
        @notify_level_netsend=0, -- never
        @notify_level_page=0,
        @delete_level=0,
        @description=NULL,
        @owner_login_name=N'sa',
        @notify_email_operator_name=NULL,
      @job_id = @jobId OUTPUT
IF(@@ERROR <> 0 OR @ReturnCode <> 0)
begin
    set @errCode = @@ERROR;
   GOTO QuitWithRollback;
end
print 'added job';

-- Server
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver
   @job_id = @jobId
IF(@@ERROR <> 0 OR @ReturnCode <> 0)
   GOTO QuitWithRollback;

COMMIT TRANSACTION;
RETURN;

QuitWithRollback:
   IF(@@TRANCOUNT > 0)
      ROLLBACK TRANSACTION;
   print 'Err: ' + CAST(@errCode AS varchar(10)) + ' ret: ' + cast(@ReturnCode as varchar(10));

I’m running it on SQL 2008 SP1. Any help would be very much appreciated!

Hi,

We have SQL Server 2000 with SP3. We have a maintenance plan for backups, integrity check.

I’m trying to include some more databases in the maintenance plan but I’m getting the below error:

Error 14274: Cannot add, update, or delete a job (or its steps or schedules) that originated from MSX server.

After getting this error, I tried to delete the Maintenance plan, it gave same error couple of times and then it got deleted. But jobs related to this maintenance plan in SQL Agent are NOT deleted and I tried to delete manually but still getting the same above error.

please advice

thanks

Встретилось такое сообщение об ошибке: 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.

Попробуем устранить проблему, возникающую при попытке обновить или удалить ранее созданные задания в экземпляре SQL Server 2000 или при подключении базы данных msdb после изменения имени сервера Windows.

Причина возникновения ошибки «Cannot add, update, or delete a job»

Поле originating_server содержит имя экземпляра в формате «serverinstance», поскольку SQL Server 2000 допускает множество экземпляров (instance). Используется фактическое имя сервера, а не ‘(local)’ даже для экземпляра сервера по умолчанию. 

Процесс может не обновить или не удалить задания с новым именем сервера после переименования сервера Windows, поскольку они все еще ссылаются на старое имя сервера. Это признанная проблема SQL2000 SP3. 

Решение ошибки Cannot add, update or delete a job that originated from an MSX server

Выполните по порядку следующие процедуры в анализаторе запросов (Query Analyzer):

SELECT @@servername

Проверьте, правильно ли отображается имя SQL-сервера.

  • Если нет, запустите следующую команду:

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

    После этого для изменения имени SQL-сервера запустите:

    sp_addserver <'верное_имя_сервера'>, 'local'

    Чтобы обновленная настройка вступила в силу, перезапустите службу SQL-сервера.

  • Если да, выполните следующую команду, чтобы проверить поле originating_server в msdb..sysjobs:

    SELECT *
    FROM msdb..sysjobs

    И проверьте, все ли задания имеют правильное имя сервера originating_server. Если не все, то выполните приведенный ниже сценарий, чтобы обновить эту переменную с правильным именем сервера.

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

  • Error 0xfffc this utility is not for this platform ошибка
  • Error 0162 setup data integrity check failure lenovo как исправить ошибку
  • Error 001100279 ансис ошибка
  • Error 000001 far cry 5 как исправить ошибку
  • Error 00 мегафон ошибка что это