Estou tentando desabilitar um trabalho de agente SQL de uma conta que é membro da função SqlAgentOperator (mas não sysadmin)
O doco diz que isso deveria ser possível
3 Os membros SQLAgentOperatorRole podem habilitar ou desabilitar tarefas locais que não possuem usando o procedimento armazenado sp_update_job e especificando valores para os parâmetros @enabled e @job_id (ou @job_name). Se um membro desta função especificar quaisquer outros parâmetros para este procedimento armazenado, a execução do procedimento falhará.
...e, de fato, o código para msdb.dbo.sp_update_job parece oferecer suporte a isso - ele tem tratamento explícito exatamente para esse cenário. No entanto, se eu executar:
use [MSDB]
go
select suser_sname()
if(is_member('SqlAgentOperatorRole')<>1)
raiserror('Not in required role',16,1)
go
exec dbo.sp_update_job @job_name='a job', @enabled=0
... Estou tendo o erro a seguir:
Msg 229, Nível 14, Estado 5, Procedimento sp_update_job, Linha 1 A permissão EXECUTE foi negada no objeto 'sp_update_job', banco de dados 'msdb', esquema 'dbo'.
A mensagem de erro parece indicar que o proc nem está sendo executado, mas mesmo conceder EXECUTE explícito ao usuário nesse proc armazenado não parece corrigi-lo.
Alguém sabe como conceder a um usuário a capacidade de desabilitar/habilitar trabalhos do agente SQL que ele não possui ou usou com sucesso essa funcionalidade. Talvez esteja apenas quebrado no SQL 2012 SP1 CU4 (que é o que estou usando)