Template Script: System Proc\msdb.dbo.usp_purge_jobhistory.sql

USE [msdb]
GO
IF OBJECT_ID('dbo.usp_purge_jobhistory') IS NULL
    EXEC ('CREATE PROCEDURE dbo.usp_purge_jobhistory AS SELECT 1 AS ID')
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE dbo.usp_purge_jobhistory
    @HistoryCountPerJobToKeep INT = 10000,
    @oldest_date DATETIME = NULL
AS
SET NOCOUNT ON
SET @oldest_date = ISNULL(@oldest_date, DATEADD(MONTH, -6, GETDATE()))

DECLARE @SQL VARCHAR(MAX)
IF @HistoryCountPerJobToKeep > 0
    BEGIN
;
        WITH    DJ
                  AS (SELECT    job_id,
                                RunDate,
                                ROW_NUMBER() OVER (PARTITION BY job_id ORDER BY RunDate DESC) AS RowNum
                      FROM      msdb..sysjobhistory jh (NOLOCK)
                      CROSS APPLY (SELECT   CAST(CAST([run_date] AS VARCHAR) AS DATETIME)
                                            + CAST(CAST(STUFF(STUFF(RIGHT('00000000' + CAST([run_time] AS VARCHAR), 6),
                                                                    3, 0, ':'), 6, 0, ':') AS TIME) AS DATETIME) AS RunDate) d
                      WHERE     RunDate > 0
                      GROUP BY  job_id,
                                RunDate)
            SELECT  @SQL = Util.dbo.StringConcat('EXEC msdb.dbo.sp_purge_jobhistory
    @job_id = '''
 + CAST(dj.job_id AS VARCHAR(256)) + ''',
    @oldest_date = '''
 + CAST(dj.RunDate AS VARCHAR) + '''
'
, '')
            FROM    dj
            WHERE   RowNum = @HistoryCountPerJobToKeep
    END

IF @oldest_date IS NOT NULL
    EXEC msdb.dbo.sp_purge_jobhistory
        @oldest_date = @oldest_date
GO
USE [msdb]
GO
GRANT EXECUTE ON [dbo].[usp_purge_jobhistory] TO [SQLAgentUserRole]
GRANT VIEW DEFINITION ON [dbo].[usp_purge_jobhistory] TO [SQLAgentUserRole]
GRANT EXECUTE ON [dbo].[usp_purge_jobhistory] TO [SQLAgentReaderRole]
GRANT VIEW DEFINITION ON [dbo].[usp_purge_jobhistory] TO [SQLAgentReaderRole]
GRANT EXECUTE ON [dbo].[usp_purge_jobhistory] TO [SQLAgentOperatorRole]
GRANT VIEW DEFINITION ON [dbo].[usp_purge_jobhistory] TO [SQLAgentOperatorRole]
GRANT EXECUTE ON [dbo].[usp_purge_jobhistory] TO [db_ssisadmin]
GRANT VIEW DEFINITION ON [dbo].[usp_purge_jobhistory] TO [db_ssisadmin]
GRANT EXECUTE ON [dbo].[usp_purge_jobhistory] TO [db_ssisltduser]
GRANT VIEW DEFINITION ON [dbo].[usp_purge_jobhistory] TO [db_ssisltduser]
GRANT EXECUTE ON [dbo].[usp_purge_jobhistory] TO [db_ssisoperator]
GRANT VIEW DEFINITION ON [dbo].[usp_purge_jobhistory] TO [db_ssisoperator]
GO

Description for Template Script: System Proc\msdb.dbo.usp_purge_jobhistory.sql

Todo
Site Map | Printable View | © 2008 - 2012 NuRoN Consulting, INC | Powered by mojoPortal | HTML 5 | CSS | Original design by Andreas Viklund
Share This Using Popular Bookmarking Services