Haben Sie ein bisschen gegoogelt und hier ist eine Software, die Sie interessieren könnte:
SQL Job Manager
https://www.idera.com/productssolutions/freetools/sqljobmanager
Abfrage, die zurzeit SQL Server-Agent-Jobs
ausführt http://sqlconcept.com/2011/06/25/how-to-query-currently-running-sql-server-agent-jobs/
Wenn jemand mehr Links zum Hinzufügen hat, mach weiter!
Für Punkt 3 sind die Link-Abfrage und Notizen hier -
Heute habe ich nach einer Möglichkeit gesucht, alle derzeit ausgeführten SQL Server-Agent-Jobs aufzulisten. Wie jede andere Suche begann auch diese mit Google-ing. :)
Innerhalb von 2 Minuten fand ich diesen tollen Beitrag von Brent Ozar auf SQLServerPedia. Warum ist dieser Beitrag so toll? Es ist so großartig, weil Brent dachte, wenn Sie nur die sysjobs- und die sysjobhistory-Tabellen abfragen, erhalten Sie keinen genauen aktuellen Jobstatus. Dh in der Tabelle sysjobhistory haben Sie eine Spalte run_status (obwohl laut BOL die möglichen Werte für diese Spalte "Status der Jobausführung" lauten: 0 = Fehlgeschlagen, 1 = Erfolgreich, 2 = Wiederholen, 3 = Abgebrochen, 4 = In Bearbeitung ”) in Wirklichkeit wird der Wert niemals 4 (In Bearbeitung) sein. Tatsächlich werden in der Sysjobhistory-Tabelle Verlaufsdaten jedes ausgeführten Auftragsschritts gespeichert, was bedeutet, dass der Status des Schritts erst aktualisiert wird, nachdem der nächste Schritt ausgeführt wurde. Mit anderen Worten, die Tabelle wird weder in Echtzeit noch jede zweite Sekunde aktualisiert.
Also fand Brent heraus, dass es eine undokumentierte gespeicherte Prozedur sys.xp_sqlagent_enum_jobs gibt, die Teil von sp_help_job ist und den aktuellen Ausführungsstatus des Agent-Jobs liefern kann.
Obwohl ich eine Möglichkeit gefunden habe, die aktuell ausgeführten Jobs abzurufen, war ich mit diesem Skript nicht zufrieden, da es nur unter SQL 2005/2008 ausgeführt wird.
Was kann ich tun, wenn ich eine SQL 2000-Instanz besitze und neugierig auf die aktuell ausgeführten Jobs bin?
Mit ein bisschen Hilfe von Tim Chapman (dem Meister von www.SQLServerNation.com) habe ich herausgefunden, wie es geht. DANKE, Tim!
Hier ist das letzte Skript, das unter SQL 2000, 2005 und 2008 ausgeführt wird und das Ihnen die aktuell ausgeführten SQL Server-Agentenaufträge liefert. (Wie Sie sehen, ist der Unterschied zu Brents Skript sehr gering: Anstelle von "sys.xp_sqlagent_enum_jobs" verwende ich "master.dbo.xp_sqlagent_enum_jobs" und beschränke die Ergebnismenge, um nur die aktuell ausgeführten Jobs zu erhalten, indem "where x" verwendet wird .running = 1 ").
Einfach wie es ist. Genießen.
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
Ich weiß, dass dies ein älterer Beitrag ist und ich persönlich das gleiche Problem hatte. Verwalten mehrerer SQL Agent-Jobs über mehrere Instanzen hinweg. Daher habe ich mich für die Erstellung von SQL Agent Insight entschieden. Diese finden Sie hier> http://brentec.ca . Es handelt sich um ein sich entwickelndes Produkt, das in naher Zukunft aus der Betaphase aussteigen wird. Es wird ständig aktualisiert und Vorschläge sind willkommen. Dies ist ein Projekt, an dem ich in meiner Freizeit arbeite, während ich berate und einen Vollzeit-Auftritt habe, aber wenn sich die Vorschläge lohnen, werden sie in den Trichter für die Zukunft gestellt.
Derzeit handelt es sich nur um ein Überwachungstool für SQL-Agenten mit einigen Skriptfähigkeiten. Befindet sich derzeit in Version 0.11 mit 2-3 Updates pro Jahr und hat Kontaktinformationen für Unterstützung. Ja, im Moment gibt es keine Online-Hilfe. Da es sich jedoch um ein schreibgeschütztes Produkt handelt, kann die überwachte SQL-Instanz nicht beschädigt werden.
quelle
Haben Sie die Berichtsfunktion ausprobiert?
Klicken Sie mit der rechten Maustaste auf SQL Agent => Berichte => Standardberichte
quelle
Ich bin mir nicht sicher, ob dies alle Ihre Kriterien erfüllt, aber Sie könnten sich Folgendes ansehen:
http://www.sqlsoft.co.uk/sqljobvis.php
quelle
Ein weiterer zur Liste hinzuzufügen:
Eine Sache, die mir an dieser gefällt, ist die Integration in andere Komponenten wie Windows Scheduler und Oracle-Tasks.
Vielen Dank an Mark , der das angesprochen hat, als ich auf The Heap gefragt habe.
quelle