Ich versuche seit mehreren Tagen einige Probleme bezüglich der Verlaufsdaten von SQL Server-Jobs zu lösen, bisher jedoch ohne Erfolg. Ich möchte die Verlaufsdaten der Jobs so anzeigen, wie sie im Log File Viewer zu sehen sind. Ich führe Abfragen aus und erhalte Daten, bin jedoch verwirrt darüber, wie ich feststellen kann, welcher Schritt zu welchem Zeitpunkt für die Ausführung eines bestimmten Jobs gehört. Angenommen, ein Job läuft jede Stunde und hat 4 Schritte. Jedes Mal, wenn der Job ausgeführt wird, werden 5 Datensätze in sysjobhistory für einen erfolgreichen Lauf eingefügt. Nun mache ich mir Gedanken darüber, welche Schritte zu welchem Job zu einem bestimmten Zeitpunkt gehören. Wie kann ich das in einem Drill-Down-Bericht anzeigen, wenn ich einen erstellen möchte.
SELECT sysjobhistory.server,
sysjobs.name
AS
job_name,
CASE sysjobhistory.run_status
WHEN 0 THEN 'Fehlgeschlagen'
WHEN 1 THEN 'Erfolgreich'
ELSE '???'
END
AS
run_status,
Isnull(Substring(CONVERT(VARCHAR(8), run_date), 1, 4) + '-' +
Substring(CONVERT(VARCHAR(8), run_date), 5, 2) + '-' +
Substring(CONVERT(VARCHAR(8), run_date), 7, 2), '')
AS
[Ausführungsdatum],
Isnull(Substring(CONVERT(VARCHAR(7), run_time+1000000), 2, 2) + ':'
+
Substring(CONVERT(VARCHAR(7), run_time+1000000), 4, 2
)
+
':' +
Substring(CONVERT(VARCHAR(7), run_time+1000000), 6, 2), '')
AS
[Ausführungszeit],
Isnull(Substring(CONVERT(VARCHAR(7), run_duration+1000000), 2, 2) +
':' +
Substring(CONVERT(VARCHAR(7), run_duration+1000000),
4,
2)
+ ':' +
Substring(CONVERT(VARCHAR(7), run_duration+1000000), 6, 2),
''
) AS
[Dauer],
sysjobhistory.step_id,
sysjobhistory.step_name,
sysjobhistory.MESSAGE
FROM msdb.dbo.sysjobhistory
INNER JOIN msdb.dbo.sysjobs
ON msdb.dbo.sysjobhistory.job_id = msdb.dbo.sysjobs.job_id
ORDER BY instance_id DESC