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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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.
