Removes all SQL Server Agent job step logs that are specified with the arguments. Use this stored procedure to maintain the sysjobstepslogs table in the msdb database.
USE msdb
GO
DECLARE @job nvarchar(128)
DECLARE @sql1 VARCHAR(max)
Declare @sql2 VARCHAR (MAX)
Declare @sql3 VARCHAR (MAX)
DECLARE @DaysToKeepHistory DATETIME
DECLARE jobnames CURSOR FOR 
		SELECT name from dbo.sysjobs (NOLOCK)
SET @DaysToKeepHistory =  (SELECT GETDATE() - 30)
OPEN jobnames  
FETCH NEXT FROM jobnames INTO @job  
WHILE @@FETCH_STATUS = 0  
BEGIN  
       SET @sql1 = 'EXEC [dbo].[sp_delete_jobsteplog]      @job_name  = ' + CHAR (39) +  @job  + CHAR (39) 
	   SET @sql2  = ' ,  @older_than = ' + CHAR(39) +  CONVERT (CHAR (10), @DaysToKeepHistory, 101)  + CHAR(39) 
	   SET @sql3 = @sql1  +   @sql2 + ' ; ' 
       --PRINT @sql3
       EXEC (@sql3)
     
       FETCH NEXT FROM jobnames INTO @job  
END  
CLOSE jobnames  
DEALLOCATE jobnames
Comments