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.

SQL Server Eğitimleri Kanalına Abone Olun

Şunlar makaleler de hoşunuza gidebilir

Ads Blocker Image Powered by Code Help Pro
Reklam Eklentisi Kullanıyorsunuz

Lütfen bizlere destek için reklam eklentisi olmadan sitemizi ziyaret edin.

Şimdiden teşekkür ederiz.