Busqué en Google y aquí hay algunos programas que pueden interesarte:
Administrador de trabajos de SQL
https://www.idera.com/productssolutions/freetools/sqljobmanager
Consultar trabajos actualmente en ejecución del Agente SQL Server
http://sqlconcept.com/2011/06/25/how-to-query-currently-running-sql-server-agent-jobs/
Si alguien tiene más enlaces para agregar, ¡adelante!
Para el punto 3, la consulta de enlace y las notas están aquí:
Hoy realicé una búsqueda para descubrir una manera de enumerar todos los trabajos que se ejecutan actualmente en el Agente SQL Server. Como cualquier otra búsqueda, esta también comenzó con Google. :)
En 2 minutos encontré esta gran publicación de Brent Ozar en SQLServerPedia. ¿Por qué esta publicación es tan genial? Es genial porque Brent pensó que si solo consulta las tablas sysjobs y sysjobhistory no obtendrá el estado actual exacto del trabajo. Es decir, en la tabla sysjobhistory tiene una columna run_status, sin embargo (aunque según el BOL los valores posibles para esta columna son "Estado de la ejecución del trabajo: 0 = Fallido, 1 = Correcto, 2 = Reintentar, 3 = Cancelado, 4 = En progreso ”) en realidad, el valor nunca será 4 (En progreso). En realidad, en la tabla sysjobhistory se guardan los datos históricos de cada paso de trabajo ejecutado, lo que significa que el estado del paso se actualiza solo después de ejecutar el siguiente paso. En otras palabras, la tabla NO se actualiza en tiempo real, ni cada segundo.
Entonces, Brent descubrió que hay un procedimiento almacenado no documentado sys.xp_sqlagent_enum_jobs, que es parte de sp_help_job, que puede proporcionar el estado de ejecución actual del trabajo del agente.
Aunque encontré una manera de obtener los trabajos actualmente en ejecución, no estaba contento con este script porque solo se ejecuta en SQL 2005/2008.
¿Qué debo hacer si tengo una instancia de SQL 2000 y tengo mucha curiosidad sobre los trabajos que se ejecutan actualmente?
Con un poco de la ayuda de Tim Chapman (el maestro de www.SQLServerNation.com) descubrí cómo hacerlo. GRACIAS Tim!
Aquí está la secuencia de comandos final, que se ejecutará en SQL 2000, 2005 y 2008, y que le dará los trabajos de agente de SQL Server que se ejecutan actualmente. (Como puede ver, la diferencia con el script de Brent es muy pequeña: en lugar de "sys.xp_sqlagent_enum_jobs" estoy usando "master.dbo.xp_sqlagent_enum_jobs" y estoy limitando el conjunto de resultados para obtener solo los trabajos actualmente en ejecución usando "where x .running = 1 ″).
Tan simple como es. Disfrutar.
IF EXISTS (SELECT *
FROM tempdb.dbo.sysobjects
WHERE id = OBJECT_ID(N'[tempdb].[dbo].[Temp1]')
)
DROP TABLE [tempdb].[dbo].[Temp1]
GO
CREATE TABLE [tempdb].[dbo].[Temp1]
(
job_id uniqueidentifier NOT NULL,
last_run_date nvarchar (20) NOT NULL,
last_run_time nvarchar (20) NOT NULL,
next_run_date nvarchar (20) NOT NULL,
next_run_time nvarchar (20) NOT NULL,
next_run_schedule_id INT NOT NULL,
requested_to_run INT NOT NULL,
request_source INT NOT NULL,
request_source_id sysname
COLLATE database_default NULL,
running INT NOT NULL,
current_step INT NOT NULL,
current_retry_attempt INT NOT NULL,
job_state INT NOT NULL)
DECLARE @job_owner sysname
DECLARE @is_sysadmin INT
SET @is_sysadmin = isnull (is_srvrolemember ('sysadmin'), 0)
SET @job_owner = suser_sname ()
INSERT INTO [tempdb].[dbo].[Temp1]
--EXECUTE sys.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner
EXECUTE master.dbo.xp_sqlagent_enum_jobs @is_sysadmin, @job_owner
UPDATE [tempdb].[dbo].[Temp1]
SET last_run_time = right ('000000' + last_run_time, 6),
next_run_time = right ('000000' + next_run_time, 6);
-----
SELECT j.name AS JobName,
j.enabled AS Enabled,
CASE x.running
WHEN 1
THEN
'Running'
ELSE
CASE h.run_status
WHEN 2 THEN 'Inactive'
WHEN 4 THEN 'Inactive'
ELSE 'Completed'
END
END
AS CurrentStatus,
coalesce (x.current_step, 0) AS CurrentStepNbr,
CASE
WHEN x.last_run_date > 0
THEN
convert (datetime,
substring (x.last_run_date, 1, 4)
+ '-'
+ substring (x.last_run_date, 5, 2)
+ '-'
+ substring (x.last_run_date, 7, 2)
+ ' '
+ substring (x.last_run_time, 1, 2)
+ ':'
+ substring (x.last_run_time, 3, 2)
+ ':'
+ substring (x.last_run_time, 5, 2)
+ '.000',
121
)
ELSE
NULL
END
AS LastRunTime,
CASE h.run_status
WHEN 0 THEN 'Fail'
WHEN 1 THEN 'Success'
WHEN 2 THEN 'Retry'
WHEN 3 THEN 'Cancel'
WHEN 4 THEN 'In progress'
END
AS LastRunOutcome,
CASE
WHEN h.run_duration > 0
THEN
(h.run_duration / 1000000) * (3600 * 24)
+ (h.run_duration / 10000 % 100) * 3600
+ (h.run_duration / 100 % 100) * 60
+ (h.run_duration % 100)
ELSE
NULL
END
AS LastRunDuration
FROM [tempdb].[dbo].[Temp1] x
LEFT JOIN
msdb.dbo.sysjobs j
ON x.job_id = j.job_id
LEFT OUTER JOIN
msdb.dbo.syscategories c
ON j.category_id = c.category_id
LEFT OUTER JOIN
msdb.dbo.sysjobhistory h
ON x.job_id = h.job_id
AND x.last_run_date = h.run_date
AND x.last_run_time = h.run_time
AND h.step_id = 0
where x.running = 1
Sé que esta es una publicación anterior, y personalmente he tenido el mismo problema. Administrar múltiples trabajos de agente SQL en varias instancias, así que decidí crear SQL Agent Insight , que se encuentra aquí> http://brentec.ca . Es un producto en evolución y saldrá de la versión beta en un futuro cercano y se actualiza continuamente y las sugerencias son bienvenidas. Este es un proyecto en el que trabajo durante mi tiempo libre mientras consulto y también tengo un concierto de tiempo completo, pero si las sugerencias valen la pena, se ponen en la tolva para el futuro.
Actualmente es solo una herramienta de monitoreo para el agente SQL, con alguna capacidad de secuencias de comandos. Actualmente se encuentra en la versión 0.11 con 2-3 actualizaciones por año y tiene información de contacto para obtener ayuda. Sí, en este momento, no hay ninguna ayuda en línea, pero dado que es prácticamente un producto de solo lectura, no se puede dañar la instancia monitoreada de SQL.
fuente
¿Intentaste con la función de informes?
Haga clic derecho en Agente SQL => Informes => informes estándar
fuente
No estoy seguro de que esto satisfaga todos sus criterios, pero podría mirar esto:
http://www.sqlsoft.co.uk/sqljobvis.php
fuente
Otro para agregar a la lista:
Una cosa que me gusta de este es que se integra con otros componentes, como las tareas de Windows Scheduler y Oracle.
Gracias a Mark por mencionar esto cuando pregunté por The Heap.
fuente