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: