使用所有者登录名创建脚本作业

时间:2015-08-24 10:22:33

标签: sql jobs agent

我想知道这个错误的原因是什么:

无法将值NULL插入列' owner_sid',table' msdb.dbo.sysjobs';列不允许空值。 INSERT失败。声明已经终止。

我的工作脚本如下:

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'NameOfJob', 
        @enabled=1, 
        @notify_level_eventlog=0, 
        @notify_level_email=0, 
        @notify_level_netsend=0, 
        @notify_level_page=0, 
        @delete_level=0, 
        @description=N'No description available.', 
        @category_name=N'[Uncategorized (Local)]', 
        @owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'addEvent', 
        @step_id=1, 
        @cmdexec_success_code=0, 
        @on_success_action=1,

...

在测试环境中一切都很好,但是在生产中......不好......有些解决方案吗?

克里斯

1 个答案:

答案 0 :(得分:2)

可能是这个原因

sp_add_job Source

[@owner_login_name =]'登录' 拥有该作业的登录名。 login是sysname,默认值为NULL,被解释为当前登录名。 只有sysadmin固定服务器角色的成员才能设置或更改@owner_login_name的值。 如果不是sysadmin角色成员的用户设置或更改@owner_login_name的值,则执行此操作存储过程失败并返回错误。

尝试向此参数发送NULL或请求sysadmin执行它。