A menudo, la forma más rápida de obtener una lista de trabajos del Agente SQL Server es simplemente expandir el nodo del Agente SQL Server en el Explorador de objetos de SSMS.
Pero esa no es la única manera. Y dependiendo de su entorno, es posible que ni siquiera sea una opción. Si no tiene SSMS o una herramienta de base de datos que le permita ver los trabajos del Agente SQL Server, es posible que deba usar T-SQL en su lugar.
En este artículo, presento tres opciones para devolver una lista de trabajos del Agente SQL Server cuando se usa T-SQL.
Las opciones
Puede usar las siguientes opciones para devolver una lista de trabajos del Agente SQL Server con T-SQL:
- Opción 1 :Ejecute el
sp_help_job
procedimiento almacenado. - Opción 2 :consulta la
sysjobs_view
ver. - Opción 3 :consulta los
sysjobs
mesa directamente.
Todas estas opciones residen en msdb base de datos y, por lo tanto, deben ejecutarse en esa base de datos. Puede hacerlo cambiando a msdb base de datos primero, o calificando el objeto apropiadamente (por ejemplo, msdb.dbo.sysjobs_view
).
Opción 1:sp_help_job
Al usar sp_help_job
para devolver una lista de trabajos del Agente SQL Server, simplemente ejecútelo sin ningún argumento.
Así:
USE msdb;
EXEC sp_help_job;
En este caso cambié a msdb base de datos primero, lo que significaba que no necesitaba calificar completamente el procedimiento con el nombre y el esquema de la base de datos.
Esto es lo que parece cuando uso SSMS para ejecutarlo en mi entorno de prueba:
Devolver un trabajo específico
Puede usar el mismo procedimiento almacenado para devolver los detalles de cualquiera de esos trabajos. Cuando hace eso, obtiene muchos más detalles que cuando enumera todos los trabajos.
Para obtener los detalles del trabajo, debe proporcionar el nombre o ID del trabajo.
He aquí un ejemplo:
EXEC sp_help_job
@job_name = 'SqlAgentTest';
Resultado:
Esto enumera el trabajo, así como los pasos del trabajo, los horarios y los servidores de destino.
Aquí hay un ejemplo del código cuando se usa la ID:
EXEC sp_help_job
@job_id = '343D9F2A-070A-4367-BF69-4248FFF57D70';
Al usar la ID, puede omitir el nombre del parámetro si lo desea.
Ejemplo:
EXEC sp_help_job '343D9F2A-070A-4367-BF69-4248FFF57D70';
Sintaxis
La sintaxis completa de sp_help_job
va así:
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 la documentación de Microsoft para sp_help_job
para una explicación de cada parámetro, así como los valores que acepta cada uno.
Opción 2:La sysjobs_view
Ver
Puede usar sysjobs_view
para devolver una lista de trabajos del Agente SQL Server.
Ejemplo:
SELECT * FROM msdb.dbo.sysjobs_view;
En este caso califiqué el nombre de la vista con la base de datos y el esquema.
Esta vista devuelve un conjunto de resultados similar (pero ligeramente diferente) al sp_help_job
procedimiento almacenado cuando se usa sin argumentos.
Si desea detalles del trabajo, como pasos, horarios, etc., deberá unirlo con otras tablas, como sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, etc.
Aquí hay un ejemplo de unirlo con sysjobsteps
tabla:
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;
Aquí está el resultado en mi entorno de prueba:
Dado que se trata de una combinación izquierda, incluye trabajos que no tienen ningún paso (consulte el NULL
en el step_id
y step_name
columnas para el trabajo llamado TestJob
).
Para limitarlo solo a aquellos trabajos con pasos, use una unión interna.
Opción 3:Los sysjobs
Mesa
Aquí hay un ejemplo de cómo ir directamente a sysjobs
tabla:
SELECT * FROM msdb.dbo.sysjobs;
Al igual que con la vista, si desea detalles del trabajo, como pasos, horarios, etc., deberá unirlo con otras tablas, como sysjobsteps
, sysjobschedules
, sysjobactivity
, sysjobhistory
, etc.
Por lo general, se recomienda consultar la vista en lugar de la tabla directamente.