dbo.sysjobhistory (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Enthält Informationen zur Ausführung geplanter Aufträge durch den SQL Server-Agent.

Hinweis

In den meisten Fällen werden die Daten erst nach Abschluss des Auftragsschritts aktualisiert, und die Tabelle enthält in der Regel keine Datensätze für derzeit ausgeführte Auftragsschritte, aber in einigen Fällen bieten zugrunde liegende Prozesse Informationen zu laufenden Auftragsschritten.

Diese Tabelle wird in der msdb Datenbank gespeichert.

Spaltenname Datentyp BESCHREIBUNG
instance_id int Eindeutiger Bezeichner für die Zeile.
job_id uniqueidentifier Auftrags-ID.
step_id int ID des Schritts im Auftrag.
step_name sysname Name des Schritts
sql_message_id int ID eines SQL Server Fehlermeldung, die zurückgegeben wird, wenn der Auftrag fehlgeschlagen ist.
sql_severity int Schweregrad eines SQL Server Fehlers.
Nachricht nvarchar(4000) Text eines SQL Server Fehlers, falls vorhanden.
run_status int Status der Auftragsausführung:

0 = Fehler

1 = Erfolgreich
2 = Wiederholen
3 = Abgebrochen
4 = In Bearbeitung
run_date int Datum, an dem die Ausführung des Auftrags oder Schritts im YYYYMMDD Format gestartet wurde. Bei einem In-Progress-Verlauf ist dies das Datum/die Uhrzeit, an dem bzw. zu der der Verlauf geschrieben wurde.
run_time int Zeit, zu der der Auftrag oder Schritt im HHMMSS Format gestartet wird.
run_duration int Verstrichene Zeit bei der Ausführung des Auftrags oder Schritts im HHMMSS Format für Zeiträume bis zu 24 Stunden. Im Beispiel finden Sie Code zum Übersetzen längerer Laufzeiten.
operator_id_emailed int ID des Operators, der bei Abschluss des Auftrags benachrichtigt wurde.
operator_id_netsent int ID des Operators, der bei Abschluss des Auftrags durch eine Meldung benachrichtigt wurde.
operator_id_paged int ID des Operators, der mithilfe eines Pagers bei Abschluss des Auftrags benachrichtigt wurde.
retries_attempted int Anzahl der Wiederholungsversuche für den Auftrag oder Schritt.
server sysname Name des Servers, auf dem der Auftrag ausgeführt wurde.

Beispiel

Die folgende Transact-SQL-Abfrage konvertiert die run_date Spalten und run_time in eine einzelne datetime-Spalte namens LastRunDateTime. Die run_duration Spalte wird auch in ein benutzerfreundlicheres Format konvertiert. Sie können das Skript in SQL Server Management Studio oder Azure Data Studio ausführen.

SET NOCOUNT ON;

SELECT sj.name AS [Name],
   sh.step_name AS [StepName],
   DATETIMEFROMPARTS(
       LEFT(padded_run_date, 4),         -- year
       SUBSTRING(padded_run_date, 5, 2), -- month
       RIGHT(padded_run_date, 2),        -- day
       LEFT(padded_run_time, 2),         -- hour
       SUBSTRING(padded_run_time, 3, 2), -- minute
       RIGHT(padded_run_time, 2),        -- second
       0) AS [LastRunDateTime],          -- millisecond
   CASE
       WHEN sh.run_duration > 235959
           THEN CAST((CAST(LEFT(CAST(sh.run_duration AS VARCHAR), LEN(CAST(sh.run_duration AS VARCHAR)) - 4) AS INT) / 24) AS VARCHAR) + '.' + RIGHT('00' + CAST(CAST(LEFT(CAST(sh.run_duration AS VARCHAR), LEN(CAST(sh.run_duration AS VARCHAR)) - 4) AS INT) % 24 AS VARCHAR), 2) + ':' + STUFF(CAST(RIGHT(CAST(sh.run_duration AS VARCHAR), 4) AS VARCHAR(6)), 3, 0, ':')
       ELSE STUFF(STUFF(RIGHT(REPLICATE('0', 6) + CAST(sh.run_duration AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')
       END AS [LastRunDuration (d.HH:MM:SS)]
FROM msdb.dbo.sysjobs sj
INNER JOIN msdb.dbo.sysjobhistory sh
   ON sj.job_id = sh.job_id
CROSS APPLY (
   SELECT RIGHT('000000' + CAST(sh.run_time AS VARCHAR(6)), 6),
       RIGHT('00000000' + CAST(sh.run_date AS VARCHAR(8)), 8)
   ) AS shp(padded_run_time, padded_run_date)
GO

Nächste Schritte

Weitere Informationen zu verwandten Konzepten finden Sie in den folgenden Artikeln: