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.

328 Kez Okundu

Kategoriler: