Geralmente, a maneira mais rápida de obter uma lista de trabalhos do SQL Server Agent é simplesmente expandir o nó do SQL Server Agent no SSMS Object Explorer.
Mas esse não é o único caminho. E dependendo do seu ambiente, pode até não ser uma opção. Se você não tiver o SSMS ou uma ferramenta de banco de dados que permita ver os trabalhos do SQL Server Agent, talvez seja necessário usar o T-SQL.
Neste artigo, apresento três opções para retornar uma lista de trabalhos do SQL Server Agent ao usar o T-SQL.
As opções
Você pode usar as seguintes opções para retornar uma lista de trabalhos do SQL Server Agent com T-SQL:
- Opção 1 :Execute o
sp_help_job
procedimento armazenado. - Opção 2 :Consulte o
sysjobs_view
visualizar. - Opção 3 :Consulte os
sysjobs
mesa diretamente.
Todas essas opções residem no msdb banco de dados e, portanto, precisam ser executados nesse banco de dados. Você pode fazer isso alternando para o msdb banco de dados primeiro, ou qualificando o objeto apropriadamente (por exemplo,
msdb.dbo.sysjobs_view
). Opção 1:sp_help_job
Ao usar
sp_help_job
para retornar uma lista de trabalhos do SQL Server Agent, basta executá-la sem nenhum argumento. Assim:
USE msdb;
EXEC sp_help_job;
Nesse caso, mudei para o msdb banco de dados primeiro, o que significava que eu não precisava qualificar totalmente o procedimento com o nome e o esquema do banco de dados.
Aqui está o que parece quando eu uso o SSMS para executá-lo no meu ambiente de teste:
Devolver um trabalho específico
Você pode usar o mesmo procedimento armazenado para retornar os detalhes de qualquer um desses trabalhos. Quando você faz isso, obtém muito mais detalhes do que obtém ao listar todos os trabalhos.
Para obter os detalhes do trabalho, você precisa fornecer o nome ou ID do trabalho.
Aqui está um exemplo:
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Resultado:
Isso lista o trabalho, bem como todas as etapas do trabalho, agendamentos e servidores de destino.
Aqui está um exemplo do código ao usar o ID:
EXEC sp_help_job
@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';
Ao usar o ID, você pode omitir o nome do parâmetro, se desejar.
Exemplo:
EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';
Sintaxe
A sintaxe completa de
sp_help_job
fica assim:sp_help_job { [ @job_id = ] job_id
[ @job_name = ] 'job_name' }
[ , [ @job_aspect = ] 'job_aspect' ]
[ , [ @job_type = ] 'job_type' ]
[ , [ @owner_login_name = ] 'login_name' ]
[ , [ @subsystem = ] 'subsystem' ]
[ , [ @category_name = ] 'category' ]
[ , [ @enabled = ] enabled ]
[ , [ @execution_status = ] status ]
[ , [ @date_comparator = ] 'date_comparison' ]
[ , [ @date_created = ] date_created ]
[ , [ @date_last_modified = ] date_modified ]
[ , [ @description = ] 'description_pattern' ]
Consulte a documentação da Microsoft para
sp_help_job
para uma explicação de cada parâmetro, bem como os valores que cada um aceita. Opção 2:o sysjobs_view
Visualizar
Você pode usar o
sysjobs_view
para retornar uma lista de trabalhos do SQL Server Agent. Exemplo:
SELECT * FROM msdb.dbo.sysjobs_view;
Nesse caso, qualifiquei o nome da visualização com o banco de dados e o esquema.
Esta visualização retorna um conjunto de resultados semelhante (mas ligeiramente diferente) para o
sp_help_job
procedimento armazenado quando usado sem argumentos. Se você quiser detalhes do trabalho, como etapas, cronogramas, etc., precisará juntá-lo a outras tabelas, como
sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, etc Aqui está um exemplo de como juntá-lo com as
sysjobsteps
tabela:SELECT
jv.name,
jv.description,
jv.start_step_id,
js.step_id,
js.step_name
FROM msdb.dbo.sysjobs_view jv
LEFT JOIN msdb.dbo.sysjobsteps js
ON jv.job_id = js.job_id;
Aqui está o resultado no meu ambiente de teste:
Por ser uma junção esquerda, ela inclui trabalhos que não têm etapas (consulte o
NULL
no step_id
e step_name
colunas para o trabalho chamado TestJob
). Para limitá-lo apenas aos trabalhos com etapas, use uma junção interna.
Opção 3:os sysjobs
Tabela
Aqui está um exemplo de como ir diretamente para os
sysjobs
tabela:SELECT * FROM msdb.dbo.sysjobs;
Assim como na visualização, se você quiser detalhes do trabalho, como etapas, cronogramas, etc., precisará juntá-lo a outras tabelas, como
sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, etc Geralmente, é recomendável consultar a exibição em vez da tabela diretamente.