Eu escrevi um script que lê agendas de trabalho msdb.dbo.sysschedules
e executa sp_update_schedule
para alterar o active_start_time
para um determinado subconjunto de trabalhos. Em cada caso, sp_update_schedule
falha com a mensagem "O @schedule_id('xxx') especificado não existe". (ID da mensagem 14262, gravidade 16)
O schedule id
in sysschedules
não é o que está procurando? O que estou perdendo aqui?
O
@schedule_id
parâmetro onsp_update_schedule
se refere àschedule_id
coluna emmsdb.dbo.sysschedules
sp_update_schedule
contém uma chamada parasp_verify_schedule_identifiers
para validar o agendamento, e é a partir dessa etapa de verificação que você está recebendo esse erro (mensagem 14262).Se você estiver passando um ID de agendamento e um nome de agendamento, pode haver um problema na string que você está passando para o nome, pois ela é usada para filtragem adicional no procedimento de verificação.
Sugiro fazer alguns testes com chamadas diretamente para
sp_verify_schedule_identifiers
para que você possa simplificar sua solução de problemas e verifique se está passando parâmetros válidos parasp_update_schedule
:As permissões também podem estar atrapalhando. Você precisaria, no mínimo,
GRANT EXEC ON sp_update_schedule TO <your login>
para fazer a chamada que está tentando fazer.EXEC
Para executar a etapa de solução de problemas que listei acima, você também precisaria recebersp_verify_schedule_identifiers
-- embora você só precise disso se executá-lo diretamente. Normalmente, o encadeamento de propriedade permitiria que você precisasse apenas da permissão de nível superior e você teria implicitamente a permissão para fazer o que esse procedimento faz. Você também pode ser adicionado àSQLAgentUserRole
função de segurança no msdb, que inclui outras permissões também - se estiver reagendando trabalhos, também poderá precisar/querer algumas dessas outras permissões para realizar seu trabalho, supondo que este seja um nível aceitável de acesso.