Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Usando sp_help_jobschedule no SQL Server


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;