sp_purge_jobhistory (Transact-SQL)

Rimuove i record della cronologia relativi a un processo.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_purge_jobhistory 
   {   [ @job_name = ] 'job_name' | 
     | [ @job_id = ] job_id }
   [ , [ @oldest_date = ] oldest_date ]

Argomenti

  • [ @job_name= ] 'job_name'
    Nome del processo di cui si desidera eliminare i record della cronologia. job_nameè di tipo sysname e il valore predefinito è NULL. È necessario specificare l'argomento job_id oppure l'argomento job_name ma non è possibile specificarli entrambi.

    Nota

    I membri del ruolo predefinito del server sysadmin o del ruolo predefinito del database SQLAgentOperatorRole possono eseguire sp_purge_jobhistory senza specificare job_name o job_id. Quando questi argomenti non vengono specificati da un utente sysadmin, la cronologia per tutti i processi locali e multiserver dalla data specificata da oldest_date viene eliminata. Quando questi argomenti non vengono specificati da un utente SQLAgentOperatorRole, la cronologia per tutti i processi locali dalla data specificata da oldest_date viene eliminata.

  • [ @job_id= ] job_id
    Numero di identificazione del processo dei record da eliminare. job_id è di tipo uniqueidentifier e il valore predefinito è NULL. È necessario specificare l'argomento job_id oppure l'argomento job_name ma non è possibile specificarli entrambi. Vedere la nota all'interno della descrizione di @job_name per informazioni sull'utilizzo di questo argomento consentito agli utenti sysadmin o SQLAgentOperatorRole.

  • [ @oldest_date = ] oldest_date
    Il record meno recente da conservare nella cronologia. oldest_date è di tipo datetime e il valore predefinito è NULL. Se si specifica oldest_date, sp_purge_jobhistory rimuove solo i record precedenti al valore specificato.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Set di risultati

Nessuno

Osservazioni

Quando l'esecuzione di sp_purge_jobhistory viene completata correttamente, viene restituito un messaggio.

Autorizzazioni

Per impostazione predefinita, questa stored procedure può essere eseguita solo dai membri del ruolo predefinito del server sysadmin o dai membri del ruolo predefinito del database SQLAgentOperatorRole. I membri di sysadmin possono eliminare la cronologia per tutti i processi locali e multiserver. I membri di SQLAgentOperatorRole possono eliminare la cronologia solo per i processi locali.

Agli altri utenti, compresi i membri di SQLAgentUserRole e SQLAgentReaderRole, deve essere concessa esplicitamente l'autorizzazione EXECUTE per sp_purge_jobhistory. Dopo la concessione dell'autorizzazione EXECUTE per questa stored procedure, a tali utenti è consentito eliminare solo la cronologia dei processi di cui sono proprietari.

I ruoli predefiniti del database SQLAgentUserRole, SQLAgentReaderRole e SQLAgentOperatorRole si trovano nel database msdb. Per informazioni dettagliate sulle relative autorizzazioni, vedere Ruoli di database predefiniti di SQL Server Agent.

Esempi

A. Rimozione della cronologia di un processo specifico

Nell'esempio seguente viene rimossa la cronologia per un processo denominato NightlyBackups.

USE msdb ;
GO

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

B. Rimozione della cronologia di tutti i processi

Nota

Solo i membri del ruolo predefinito del server sysadmin e i membri di SQLAgentOperatorRole possono rimuovere la cronologia di tutti i processi. Quando questa stored procedure viene eseguita senza parametri da un utente sysadmin, viene eliminata la cronologia di tutti i processi locali e multiserver. Quando questa stored procedure viene eseguita senza parametri da un utente SQLAgentOperatorRole, viene eliminata solo la cronologia di tutti i processi locali.

Nell'esempio seguente la procedura viene eseguita senza alcun parametro in modo da rimuovere tutti i record della cronologia.

USE msdb ;
GO

EXEC dbo.sp_purge_jobhistory ;
GO