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.

SQL Server’da İki Tarih Arasında Çalışan Jobları Bulmak

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.

50 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

Aşağıdaki Yazılar da İlginizi Çekebilir

Yazı kopyalamak yasaktır!