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.
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.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
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
Vedere anche
Riferimento
sp_help_job (Transact-SQL)
sp_help_jobhistory (Transact-SQL)
Stored procedure di sistema (Transact-SQL)
GRANT - autorizzazioni per oggetti (Transact-SQL)