Skip to content

Latest commit

 

History

History
111 lines (74 loc) · 5.08 KB

File metadata and controls

111 lines (74 loc) · 5.08 KB
title sp_purge_jobhistory (Transact-SQL)
description sp_purge_jobhistory removes the history records for a job in the SQL Server Agent service.
author markingmyname
ms.author maghan
ms.reviewer randolphwest
ms.date 06/23/2025
ms.service sql
ms.subservice system-objects
ms.topic reference
f1_keywords
sp_purge_jobhistory_TSQL
sp_purge_jobhistory
helpviewer_keywords
sp_purge_jobhistory
dev_langs
TSQL
monikerRange >=sql-server-2016 || >=sql-server-linux-2017 || =azuresqldb-mi-current

sp_purge_jobhistory (Transact-SQL)

[!INCLUDE sql-asdbmi]

Removes the history records for a job in the [!INCLUDE ssnoversion-md] Agent service.

:::image type="icon" source="../../includes/media/topic-link-icon.svg" border="false"::: Transact-SQL syntax conventions

Syntax

sp_purge_jobhistory
    [ [ @job_name = ] N'job_name' ]
    [ , [ @job_id = ] 'job_id' ]
    [ , [ @oldest_date = ] oldest_date ]
[ ; ]

Arguments

[ @job_name = ] N'job_name'

The name of the job for which to delete the history records. @job_name is sysname, with a default of NULL. Either @job_id or @job_name must be specified, but both can't be specified.

Members of the sysadmin fixed server role or members of the SQLAgentOperatorRole fixed database role can execute sp_purge_jobhistory without specifying a @job_name or @job_id. When sysadmin users don't specify these arguments, the job history for all local and multiserver jobs is deleted within the time specified by @oldest_date. When SQLAgentOperatorRole users don't specify these arguments, the job history for all local jobs is deleted within the time specified by @oldest_date.

[ @job_id = ] 'job_id'

The job identification number of the job for the records to be deleted. @job_id is uniqueidentifier, with a default of NULL. Either @job_id or @job_name must be specified, but both can't be specified.

See the note in the description of @job_name for information about how sysadmin or SQLAgentOperatorRole users can use this argument.

[ @oldest_date = ] oldest_date

The oldest record to retain in the history. @oldest_date is datetime, with a default of NULL. When oldest_date is specified, sp_purge_jobhistory only removes records that are older than the value specified.

Return code values

0 (success) or 1 (failure).

Result set

None.

Remarks

When sp_purge_jobhistory completes successfully, a message is returned.

This stored procedure shares the name of sp_purge_jobhistory with a similar object for the Azure Elastic Jobs service for Azure SQL Database. For information about the elastic jobs version, see jobs.sp_purge_jobhistory (Azure Elastic Jobs).

Permissions

By default, only members of the sysadmin fixed server role or the SQLAgentOperatorRole fixed database role can execute this stored procedure. Members of sysadmin can purge the job history for all local and multiserver jobs. Members of SQLAgentOperatorRole can purge the job history for all local jobs only.

Other users, including members of SQLAgentUserRole and members of SQLAgentReaderRole, must explicitly be granted the EXECUTE permission on sp_purge_jobhistory. After being granted EXECUTE permission on this stored procedure, these users can only purge the history for jobs that they own.

The SQLAgentUserRole, SQLAgentReaderRole, and SQLAgentOperatorRole fixed database roles are in the msdb database. For details about their permissions, see SQL Server Agent Fixed Database Roles.

Examples

A. Remove history for a specific job

The following example removes the history for a job named NightlyBackups.

USE msdb;
GO

EXECUTE dbo.sp_purge_jobhistory @job_name = N'NightlyBackups';
GO

B. Remove history for all jobs

Only members of the sysadmin fixed server role and members of the SQLAgentOperatorRole can remove history for all jobs. When sysadmin users execute this stored procedure with no parameters, the job history for all local and multiserver jobs is purged. When SQLAgentOperatorRole users execute this stored procedure with no parameters, only the job history for all local jobs is purged.

The following example executes the procedure with no parameters to remove all history records.

USE msdb;
GO

EXECUTE dbo.sp_purge_jobhistory;
GO

Related content