sp_purge_jobhistory (Transact-SQL)
Rimuove i record della cronologia relativi a un processo.
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