Array
(
)

PROCEDURE EXECUTANDO COM WITH EXECUTE AS

Ceilton Marinho
   - 01 out 2014

Boa noite senhores.
Temos uma tela que permitira a alteração de schedule de determinados Jobs do SQL Server 2008.
A tela chama uma procedure, SP_JOB_UPDATE, que recebe parâmetros do job e de seu schedule. A procedure chama msdb.dbo.sp_update_job e msdb.dbo.sp_update_schedule para alterar o job (status apenas) e o schedule.
O problema: O usuario final não conseguira executar as procedures do msdb, visto que não posso dar permissao neste banco e nestas SP’s.
Criei um usuario ‘SISTEMA’ e lhe dei permissao de admin.
Ao logar com esse usuario a procedure executa sem problemas.
Ao compilar a procedure SP_JOB_UPDATE WITH EXECUTE AS ‘SISTEMA’ e tentar executa-la com um usuario final da erro.
Ao executar a procedure logado como SISTEMA, da o mesmo erro... (!!!!!!!!!)
Como pode dar o erro logado como SISTEMA se esse usuario é ‘admin’ e consegue executar a procedure quando ela não possui a clausula WITH EXECUTE AS ‘SISTEMA’ ??
Erro:
Msg 14262, Level 16, State 1, Procedure sp_verify_job_identifiers, Line 41
O @job_id ('45E9541A-7304-4F33-9808-2F418A4DB343') especificado não existe.
Msg 14262, Level 16, State 1, Procedure sp_verify_schedule_identifiers, Line 73
O @schedule_id ('19') especificado não existe.