sp_purge_jobhistory (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Remove os registros de histórico de um trabalho no serviço SQL Server Agent.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@job_name [ = ] N'job_name'

O nome do trabalho para o qual os registros históricos serão excluídos. @job_name é sysname, com um padrão de NULL. Tanto @job_id quanto @job_name devem ser especificados, mas ambos não podem ser especificados.

Os membros da função de servidor fixa sysadmin ou membros da função de banco de dados fixa SQLAgentOperatorRole podem ser executados sp_purge_jobhistory sem especificar um @job_name ou @job_id. Quando os usuários sysadmin não especificam esses argumentos, o histórico de trabalhos de todos os trabalhos locais e multisservidores é excluído dentro do tempo especificado pelo @oldest_date. Quando os usuários SQLAgentOperatorRole não especificam esses argumentos, o histórico de trabalhos de todos os trabalhos locais é excluído dentro do tempo especificado pelo @oldest_date.

@job_id [ = ] 'job_id'

O número de identificação do trabalho cujos registros serão excluídos. @job_id é uniqueidentifier, com um padrão de NULL. Tanto @job_id quanto @job_name devem ser especificados, mas ambos não podem ser especificados.

Consulte a observação na descrição do @job_name para obter informações sobre como os usuários sysadmin ou SQLAgentOperatorRole podem usar esse argumento.

@oldest_date [ = ] oldest_date

O registro mais antigo a ser retido no histórico. @oldest_date é datetime, com um padrão de NULL. Quando oldest_date é especificado, sp_purge_jobhistory remove apenas os registros mais antigos que o valor especificado.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Conjunto de resultados

Nenhum.

Comentários

Quando sp_purge_jobhistory concluído com êxito, uma mensagem é retornada.

Esse procedimento armazenado compartilha o nome de sp_purge_jobhistory com um objeto semelhante para o serviço de Trabalhos Elásticos do Azure para Banco de Dados SQL do Azure. Para obter informações sobre a versão dos trabalhos elásticos, consulte jobs.sp_purge_jobhistory (Trabalhos Elásticos do Azure).

Permissões

Por padrão, somente os membros da função de servidor fixa sysadmin ou da função de banco de dados fixa SQLAgentOperatorRole podem executar esse procedimento armazenado. Os membros do sysadmin podem limpar o histórico de tarefas para todas as tarefas locais e multisservidor. Os membros do SQLAgentOperatorRole podem limpar o histórico de trabalhos apenas para todos os trabalhos locais.

Outros usuários, incluindo membros de SQLAgentUserRole e membros de SQLAgentReaderRole, devem receber explicitamente a permissão EXECUTE em sp_purge_jobhistory. Depois de receber a permissão EXECUTE nesse procedimento armazenado, esses usuários poderão limpar somente o histórico dos trabalhos que eles possuam.

As funções de banco de dados fixas SQLAgentUserRole, SQLAgentReaderRole e SQLAgentOperatorRole estão no msdb banco de dados. Para obter detalhes sobre suas permissões, consulte Funções de banco de dados fixas do SQL Server Agent.

Exemplos

R. Remover histórico de um trabalho específico

O exemplo a seguir remove o histórico de um trabalho denominado NightlyBackups.

USE msdb;
GO

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

B. Remover histórico de todos os trabalhos

Somente membros da função de servidor fixa sysadmin e membros do SQLAgentOperatorRole podem remover o histórico de todos os trabalhos. Quando os usuários sysadmin executam esse procedimento armazenado sem parâmetros, o histórico de tarefas de todos os trabalhos locais e multisservidor é limpo. Quando os usuários SQLAgentOperatorRole executam esse procedimento armazenado sem parâmetros, somente o histórico de trabalhos de todos os trabalhos locais é limpo.

O exemplo a seguir executa o procedimento sem parâmetros para remover todos os registros históricos.

USE msdb;
GO

EXEC dbo.sp_purge_jobhistory;
GO