SQL 2005/2008 和 sp_add_jobstep 失败

SQL 2005/2008 和 sp_add_jobstep 失败

我有一个由非系统管理员用户创建的作业。此作业失败,因为@database_user_name设置错误"Only a sysadmin can specify '@database_user_name' parameter"

如果我读 BOL,这将在 SQL 2008 R2 中被忽略,我已确认我正在运行它@@version

有什么想法吗?

EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, 
@step_name = N'Delete From TmpEmployee', 
@command = N'Delete From TmpEmployee', 
@database_name = @Database, @server = N'', 
@database_user_name = N'',
@subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, 
@retry_interval = 1, @output_file_name = N'', @on_success_step_id = 2, 
@on_success_action = 4, @on_fail_step_id = 0, @on_fail_action = 2
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback 

答案1

@database_user_name = N''从语句中取出参数。创建后,作业所有者将是运行该语句的登录名。

然后您可以运行sp_update_job @owner_login_name='MyLogin'以更改所有权。这可以sysadmin由 、 或 中的某人SQLAgentUserRoleSQLAgentReaderRole成员SQLAgentOperatorRole运行msdb

或者,将用户添加到上述 msdb 角色之一。

相关内容