dbo.sysjobhistory (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Enthält Informationen zur Ausführung geplanter Aufträge durch die 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 Auftragsschritte, die derzeit ausgeführt werden. In einigen Fällen stellen zugrunde liegende Prozesse Informationen zu laufenden Auftragsschritten bereit.
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 | DIE ID einer SQL Server-Fehlermeldung, die zurückgegeben wird, wenn der Auftrag fehlgeschlagen ist. |
sql_severity |
int | Schweregrad eines SQL Server-Fehlers. |
message |
nvarchar(4000) | Text( falls vorhanden) eines SQL Server-Fehlers. |
run_status |
int | Status der Auftragsausführung:0 = Fehlgeschlagen1 = Erfolgreich2 = Wiederholen3 = Abgebrochen4 = In Bearbeitung |
run_date |
int | Datum, an dem der Auftrag oder der Schritt gestartet wurde, im yyyyMMdd Format. Für einen In Progress-Verlauf ist dieser Wert das Datum und die Uhrzeit, zu der der Verlauf geschrieben wurde. |
run_time |
int | Zeit, zu der der Auftrag oder der Schritt im HHmmss Format begonnen hat. |
run_duration |
int | Verstrichene Zeit bei der Ausführung des Auftrags oder Schritts im HHmmss Format für Zeiträume bis zu 24 Stunden. Suchen Sie Code zum Übersetzen längerer Laufzeiten im Beispiel. |
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. |
Beispiele
Die folgende Transact-SQL-Abfrage konvertiert die Spalten und die run_date
Spalten in eine Datetime-Spalte mit dem Namen LastRunStartDateTime
.run_time
Die run_duration
Spalte wird in eine Int-Spalte mit dem Namen LastRunDurationSeconds
konvertiert. Diese beiden Spalten werden dann zum Berechnen der LastRunFinishDateTime
. 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,
shp.LastRunStartDateTime,
DATEADD(SECOND, shp.LastRunDurationSeconds, shp.LastRunStartDateTime) AS LastRunFinishDateTime,
shp.LastRunDurationSeconds,
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)],
DATEADD(SECOND, shp.LastRunDurationSeconds, shp.LastRunStartDateTime) AS LastRunFinishDateTime
FROM msdb.dbo.sysjobs sj
INNER JOIN msdb.dbo.sysjobhistory sh ON sj.job_id = sh.job_id
CROSS APPLY (SELECT DATETIMEFROMPARTS(sh.run_date / 10000, -- years
sh.run_date % 10000 / 100, -- months
sh.run_date % 100, -- days
sh.run_time / 10000, -- hours
sh.run_time % 10000 / 100, -- minutes
sh.run_time % 100, -- seconds
0 -- milliseconds
) AS LastRunStartDateTime,
(sh.run_duration / 10000) * 3600 -- convert hours to seconds, can be greater than 24
+ ((sh.run_duration % 10000) / 100) * 60 -- convert minutes to seconds
+ (sh.run_duration % 100) AS LastRunDurationSeconds
) AS shp;
GO