No SQL Server, o
sp_help_jobschedule procedimento armazenado retorna informações sobre o agendamento de trabalhos. Este artigo fornece uma visão geral desse procedimento armazenado, incluindo exemplos.
Sintaxe
A sintaxe oficial é assim:
sp_help_jobschedule { [ @job_id = ] job_id | [ @job_name = ] 'job_name' }
[ , [ @schedule_name = ] 'schedule_name' ]
[ , [ @schedule_id = ] schedule_id ]
[ , [ @include_description = ] include_description ] Quando você chama
sp_help_jobschedule , você deve fornecer o nome do trabalho ou seu ID (mas não ambos) ou o ID do agendamento. Você também pode passar o nome do agendamento, mas apenas em combinação com o ID do trabalho ou seu nome. A combinação aceita é um pouco complicada. Basicamente, fica assim:
Se
schedule_id for especificado, nem job_id nem job_name pode ser especificado. Caso contrário, o job_id ou job_name parâmetros podem ser usados com schedule_name . No entanto, você não poderá usar o
schedule_id se um agendamento estiver anexado a vários trabalhos. Observe que
sp_help_jobschedule está no msdb banco de dados, então ele precisa ser executado a partir daí. Você pode fazer isso alternando para o msdb banco de dados (por exemplo, com USE msdb ), ou qualificando o procedimento com o nome e o esquema do banco de dados (ou seja, msdb.dbo.sp_help_jobschedule ). Exemplo
Aqui está um exemplo para demonstrar como retornar todos os agendamentos anexados a um trabalho específico:
EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest'; Resultado:
Isso retorna uma lista de agendamentos anexados ao trabalho especificado com o
@job_name argumento. Alternativamente, eu poderia ter passado o
@job_id :EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8'; Mas nesse caso, eu não poderia usar
@job_name (é um ou outro). Ao usar o ID do trabalho, você pode omitir o nome do parâmetro, se desejar:
EXEC sp_help_jobschedule '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8'; Usando o @schedule_id Parâmetro
Você também pode obter uma programação com base em seu ID:
EXEC sp_help_jobschedule
@schedule_id = 15; Isso funciona bem, desde que a programação não esteja vinculada a vários trabalhos.
Veja o que acontece quando uma programação é anexada a vários trabalhos:
EXEC sp_help_jobschedule
@schedule_id = 14; Resultado:
Msg 14369, Level 16, State 1, Procedure sp_help_jobschedule, Line 69 [Batch Start Line 22] The schedule ID "14" is used by more than one job. Specify the job_id.
E mesmo que ele peça para especificar o
job_id , se você fizer isso, precisará remover o schedule_id (como mencionado, se você passar um schedule_id , você não pode incluir o job_name ou job_id ). Para demonstrar isso, se eu simplesmente adicionar o
job_id e mantenha o schedule_id lá, recebo o seguinte erro. EXEC sp_help_jobschedule
@job_id = '8A6E1BFF-9F46-4FF9-8E63-ABC8B224B6F8',
@schedule_id = 14; Resultado:
Msg 14273, Level 16, State 1, Procedure sp_help_jobschedule, Line 51 [Batch Start Line 22] You must provide either @job_id or @job_name (and, optionally, @schedule_name), or @schedule_id.
Incluir a Descrição
Outra coisa que você pode fazer é especificar se deve ou não incluir a descrição da programação.
Por padrão, a descrição não é incluída no conjunto de resultados. Na verdade, a
schedule_description coluna é incluído, mas não contém a descrição, a menos que você solicite explicitamente. Se você não solicitar, o schedule_description coluna exibe (Description not requested.) . O
@include_description parâmetro é bit , com um padrão de 0 , o que significa que não exibe a descrição. Passando um valor de 1 resulta na descrição que está sendo exibida. EXEC sp_help_jobschedule
@job_name = 'SqlAgentTest',
@include_description = 1;