Назад | Перейти на главную страницу

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 

Выньте @database_user_name = N'' параметр из инструкции. После создания владельцем вакансии будет логин, который выполнил оператор.

Затем вы можете запустить sp_update_job @owner_login_name='MyLogin' сменить владельца. Этим может управлять член sysadmin кто-то в SQLAgentUserRole, SQLAgentReaderRole, или SQLAgentOperatorRole в msdb.

Либо добавьте пользователя к одной из указанных выше ролей msdb.