gpt4 book ai didi

sql-server - 错误 14274 - 无法删除然后重新添加作业

转载 作者:行者123 更新时间:2023-12-03 17:10:14 25 4
gpt4 key购买 nike

我正在尝试创建一个相当简单的脚本来处理 SQL Server 代理作业。它执行 2 个任务:

1) 如果给定的作业存在,则将其删除
2)创建作业

(由于业务要求,我无法修改现有作业,脚本必须删除并重新创建它。)

第一次运行脚本工作正常(创建作业)。在此之后的任何时间运行都会产生错误 14274“无法添加、更新或删除源自 MSX 服务器的作业。”

我已经对此进行了大量搜索,并且大多数解决方案都以更改服务器名称为中心。我的服务器名称没有改变,也从未改变。

这是我所拥有的:

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));

我在 SQL 2008 SP1 上运行它。任何帮助将不胜感激!

最佳答案

实际上,我在胡闹之后想通了这一点。

看来有必要设置@JobId变量为 NULL在删除和创建作业的语句之间。一旦你这样做了,错误就会消失,它会起作用。

我希望这可以帮助别人!

关于sql-server - 错误 14274 - 无法删除然后重新添加作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com