Articles by "Jobs"

Showing posts with label Jobs. Show all posts

In this blog post, we’ll get the information of SQL Server Agent job schedules. This T-SQL commands and explore how they retrieve information about job schedules, recurrence patterns, and execution times.

This code has two parts one will gives a Daily schedulers of SQL server agent jobs and the other one gives a Weekly schedulers. 

Part 1: Daily Schedules

The first part of the script focuses on daily schedules.

Part 2: Weekly Schedules

The second part of the script deals with weekly schedules.


SELECT sysjobs.NAME      job_name,
       sysjobs.enabled   job_enabled,
       sysschedules.NAME schedule_name,
       sysschedules.freq_recurrence_factor,
       CASE
         WHEN freq_type = 4 THEN 'Daily'
       END               frequency,
       'every '
       + Cast (freq_interval AS VARCHAR(3))
       + ' day(s)'       Days,
       CASE
         WHEN freq_subday_type = 2 THEN ' every '
                                        + Cast(freq_subday_interval AS VARCHAR(7
                                        ))
                                        + ' seconds' + ' starting at '
                                        + Stuff(Stuff(RIGHT(Replicate('0', 6) +
                                        Cast(
                                        active_start_time AS VARCHAR(6)), 6), 3,
                                        0, ':'
                                        ), 6, 0, ':')
         WHEN freq_subday_type = 4 THEN ' every '
                                        + Cast(freq_subday_interval AS VARCHAR(7
                                        ))
                                        + ' minutes' + ' starting at '
                                        + Stuff(Stuff(RIGHT(Replicate('0', 6) +
                                        Cast(
                                        active_start_time AS VARCHAR(6)), 6), 3,
                                        0, ':'
                                        ), 6, 0, ':')
         WHEN freq_subday_type = 8 THEN ' every '
                                        + Cast(freq_subday_interval AS VARCHAR(7
                                        ))
                                        + ' hours' + ' starting at '
                                        + Stuff(Stuff(RIGHT(Replicate('0', 6) +
                                        Cast(
                                        active_start_time AS VARCHAR(6)), 6), 3,
                                        0, ':'
                                        ), 6, 0, ':')
         ELSE ' starting at '
              + Stuff(Stuff(RIGHT(Replicate('0', 6) + Cast(active_start_time AS
              VARCHAR
              (6)), 6), 3, 0, ':'), 6, 0, ':')
       END               time
FROM   msdb.dbo.sysjobs
       INNER JOIN msdb.dbo.sysjobschedules
               ON sysjobs.job_id = sysjobschedules.job_id
       INNER JOIN msdb.dbo.sysschedules
               ON sysjobschedules.schedule_id = sysschedules.schedule_id
WHERE  freq_type = 4 

--Below is the script for weekly schedulers of SQL agent jobs..

SELECT sysjobs.NAME
       job_name
       ,
       sysjobs.enabled
       job_enabled,
       sysschedules.NAME
       schedule_name,
       sysschedules.freq_recurrence_factor,
       CASE
         WHEN freq_type = 8 THEN 'Weekly'
       END
       frequency,
       Replace (CASE WHEN freq_interval&1 = 1 THEN 'Sunday, ' ELSE '' END + CASE
                WHEN
                freq_interval&2 = 2 THEN 'Monday, ' ELSE '' END + CASE WHEN
                freq_interval&4 = 4 THEN 'Tuesday, ' ELSE '' END + CASE WHEN
                freq_interval&8 = 8 THEN 'Wednesday, ' ELSE '' END + CASE WHEN
                freq_interval&16 = 16 THEN 'Thursday, ' ELSE '' END + CASE WHEN
                freq_interval&32 = 32 THEN 'Friday, ' ELSE '' END + CASE WHEN
                freq_interval&64 = 64 THEN 'Saturday, ' ELSE '' END, ', ', '')
       Days,
       CASE
         WHEN freq_subday_type = 2 THEN ' every '
                                        + Cast(freq_subday_interval AS VARCHAR(7
                                        ))
                                        + ' seconds' + ' starting at '
                                        + Stuff(Stuff(RIGHT(Replicate('0', 6) +
                                        Cast(
                                        active_start_time AS VARCHAR(6)), 6), 3,
                                        0, ':'
                                        ), 6, 0, ':')
         WHEN freq_subday_type = 4 THEN ' every '
                                        + Cast(freq_subday_interval AS VARCHAR(7
                                        ))
                                        + ' minutes' + ' starting at '
                                        + Stuff(Stuff(RIGHT(Replicate('0', 6) +
                                        Cast(
                                        active_start_time AS VARCHAR(6)), 6), 3,
                                        0, ':'
                                        ), 6, 0, ':')
         WHEN freq_subday_type = 8 THEN ' every '
                                        + Cast(freq_subday_interval AS VARCHAR(7
                                        ))
                                        + ' hours' + ' starting at '
                                        + Stuff(Stuff(RIGHT(Replicate('0', 6) +
                                        Cast(
                                        active_start_time AS VARCHAR(6)), 6), 3,
                                        0, ':'
                                        ), 6, 0, ':')
         ELSE ' starting at '
              + Stuff(Stuff(RIGHT(Replicate('0', 6) + Cast(active_start_time AS
              VARCHAR
              (6)), 6), 3, 0, ':'), 6, 0, ':')
       END
       time
FROM   msdb.dbo.sysjobs
       INNER JOIN msdb.dbo.sysjobschedules
               ON sysjobs.job_id = sysjobschedules.job_id
       INNER JOIN msdb.dbo.sysschedules
               ON sysjobschedules.schedule_id = sysschedules.schedule_id
WHERE  freq_type = 8
ORDER  BY job_enabled DESC 

 we have use below TSQL script to take all database backup jobs 


DECLARE @name VARCHAR(50) -- database name  
DECLARE @path VARCHAR(256) -- path for backup files  
DECLARE @fileName VARCHAR(256) -- filename for backup  
DECLARE @fileDate VARCHAR(20) -- used for file name
DECLARE @DeleteDate DATETIME = Dateadd(hh, -22, Getdate());
-- specify database backup directory
SET @path =
'\\servername\foldername\'
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20), Getdate(), 112) + '_'
                   + Replace(CONVERT(VARCHAR(20), Getdate(), 108), ':', '')
DECLARE db_cursor CURSOR read_only FOR
  SELECT NAME
  FROM   master.dbo.sysdatabases
  WHERE  NAME NOT IN ( 'master', 'model', 'msdb', 'tempdb'
                     ) -- exclude these databases
OPEN db_cursor
FETCH next FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
  BEGIN
      SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
      BACKUP DATABASE @name TO DISK = @fileName WITH copy_only, noformat, noinit
      ,
      skip, norewind, nounload, compression, stats = 2
      FETCH next FROM db_cursor INTO @name
  END
EXEC master.sys.Xp_delete_file
  0,
  @path,
  'BAK',
  @DeleteDate,
  0;
CLOSE db_cursor
DEALLOCATE db_cursor 


Author Name

Contact Form

Name

Email *

Message *

Powered by Blogger.