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

Bed*_*arz 1 sql jobs agent

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

无法将值NULL插入表“ msdb.dbo.sysjobs”的“ owner_sid”列中;列不允许为空。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,
Run Code Online (Sandbox Code Playgroud)

....

在测试环境中一切都很好,但是在生产方面却很糟糕……某种解决方案?

克里斯

Vik*_*kov 5

可能这就是原因

sp_add_job 来源

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

尝试向该参数发送NULL或要求sysadmin执行它。