SQL Server’da İki Tarih Arasında Çalışan Jobları Bulmak
Herkese merhaba. Bu yazıda SQL Server’da iki tarih arasında çalışan jobları bulmak hakkında bilgi vereceğim.
SQL Server’da bazı durumlarda iki tarih arasında çalışan jobları bulup listeletmek isteyebiliriz.
Aşağıdaki kod yardımıyla bu işlemi rahatlıkla yapabilirsiniz.
SELECT DISTINCT
CAST([sJOB].[job_id] AS VARCHAR(MAX)) AS Id,
[sJSTP].[step_name] AS [Step Adı],
[sJOB].[name] AS [Job Adı],
CASE [sJSTP].[run_date]
WHEN 0 THEN
NULL
ELSE
CAST(CAST([sJSTP].[run_date] AS CHAR(8)) + ' '
+ STUFF(STUFF(RIGHT('000000' + CAST([sJSTP].[run_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') AS DATETIME)
END AS Baslangic,
DATEADD(
ss,
run_duration,
CASE [sJSTP].[run_date]
WHEN 0 THEN
NULL
ELSE
CAST(CAST([sJSTP].[run_date] AS CHAR(8)) + ' '
+ STUFF(
STUFF(RIGHT('000000' + CAST([sJSTP].[run_time] AS VARCHAR(6)), 6), 3, 0, ':'),
6,
0,
':'
) AS DATETIME)
END
) Bitis,
CASE [sJSTP].[run_status]
WHEN 0 THEN
'Failed'
WHEN 1 THEN
'Success'
WHEN 2 THEN
'Retry'
WHEN 3 THEN
'Cancelled'
WHEN 5 THEN
'Unknown'
END AS Durum
FROM [msdb].[dbo].[sysjobhistory] AS [sJSTP]
INNER JOIN [msdb].[dbo].[sysjobs] AS [sJOB]
ON [sJSTP].[job_id] = [sJOB].[job_id]
INNER JOIN [msdb].[dbo].[sysjobsteps] steps
ON [sJSTP].[job_id] = [steps].[job_id]
WHERE [sJSTP].[run_date] <> 0
AND CASE [sJSTP].[run_date]
WHEN 0 THEN
NULL
ELSE
CAST(CAST([sJSTP].[run_date] AS CHAR(8)) + ' '
+ STUFF(STUFF(RIGHT('000000' + CAST([sJSTP].[run_time] AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':') AS DATETIME)
END
BETWEEN DATEADD(hh, -20, GETDATE()) AND GETDATE()
AND [sJSTP].[step_name] NOT IN ( '(Job outcome)' )
ORDER BY 4 DESC;
Kodu çalıştırdığınızda aşağıdaki gibi bir sonnuç alacaksınız.
Görüldüğü üzere iki tarih arasındaki joblar listelenmiş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.