Compartir a través de


sp_purge_jobhistory (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Quita los registros de historial de un trabajo en el servicio Agente SQL Server.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @job_name = ] N'job_name'

Nombre del trabajo del que se van a eliminar registros de historial. @job_name es sysname, con un valor predeterminado de NULL. Se deben especificar @job_id o @job_name , pero no se pueden especificar ambos.

Los miembros del rol fijo de servidor sysadmin o los miembros del rol fijo de base de datos SQLAgentOperatorRole se pueden ejecutar sp_purge_jobhistory sin especificar un @job_name o @job_id. Cuando los usuarios sysadmin no especifican estos argumentos, el historial de trabajos de todos los trabajos locales y multiservidor se elimina dentro del tiempo especificado por @oldest_date. Cuando los usuarios de SQLAgentOperatorRole no especifican estos argumentos, el historial de trabajos de todos los trabajos locales se elimina dentro del tiempo especificado por @oldest_date.

[ @job_id = ] 'job_id'

Número de identificación del trabajo para los registros que se van a eliminar. @job_id es uniqueidentifier, con un valor predeterminado de NULL. Se deben especificar @job_id o @job_name , pero no se pueden especificar ambos.

Vea la nota en la descripción de @job_name para obtener información sobre cómo los usuarios sysadmin o SQLAgentOperatorRole pueden usar este argumento.

[ @oldest_date = ] oldest_date

Registro más antiguo que se mantendrá en el historial. @oldest_date es datetime, con un valor predeterminado de NULL. Cuando se especifica oldest_date , sp_purge_jobhistory solo quita los registros anteriores al valor especificado.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

Ninguno.

Comentarios

Cuando sp_purge_jobhistory se completa correctamente, se devuelve un mensaje.

Este procedimiento almacenado comparte el nombre de sp_purge_jobhistory con un objeto similar para el servicio Trabajos elásticos de Azure para Azure SQL Database. Para obtener información sobre la versión de trabajos elásticos, consulte jobs.sp_purge_jobhistory (Trabajos elásticos de Azure).

Permisos

De forma predeterminada, solo los miembros del rol fijo de servidor sysadmin o el rol fijo de base de datos SQLAgentOperatorRole pueden ejecutar este procedimiento almacenado. Los miembros de sysadmin pueden purgar el historial de trabajos de todos los trabajos locales y multiservidor. Los miembros de SQLAgentOperatorRole solo pueden purgar el historial de trabajos de todos los trabajos locales.

Otros usuarios, incluidos los miembros de SQLAgentUserRole y los miembros de SQLAgentReaderRole, deben concederse explícitamente el permiso EXECUTE en sp_purge_jobhistory. Una vez que disponen del permiso EXECUTE en este procedimiento almacenado, estos usuarios solo pueden purgar el historial de los trabajos que les pertenecen.

Los roles fijos de base de datos SQLAgentUserRole, SQLAgentReaderRole y SQLAgentOperatorRole están en la msdb base de datos. Para obtener más información sobre sus permisos, consulte Agente SQL Server roles fijos de base de datos.

Ejemplos

A Quitar el historial de un trabajo determinado

En el ejemplo siguiente se quita el historial de un trabajo denominado NightlyBackups.

USE msdb;
GO

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

B. Quitar el historial de todos los trabajos

Solo los miembros del rol fijo de servidor sysadmin y los miembros de SQLAgentOperatorRole pueden quitar el historial de todos los trabajos. Cuando los usuarios sysadmin ejecutan este procedimiento almacenado sin parámetros, se purga el historial de trabajos de todos los trabajos locales y multiservidor. Cuando los usuarios de SQLAgentOperatorRole ejecutan este procedimiento almacenado sin parámetros, solo se purga el historial de trabajos de todos los trabajos locales.

En el ejemplo siguiente se ejecuta el procedimiento sin parámetros para quitar todos los registros de historial.

USE msdb;
GO

EXEC dbo.sp_purge_jobhistory;
GO