У меня есть работа, которую создает пользователь, не являющийся системным администратором. Эта работа не выполняется, потому что @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.