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;