Condividi tramite


sp_purge_jobhistory (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Rimuove i record di cronologia per un processo nel servizio SQL Server Agent.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @job_name = ] N'job_name'

Nome del processo di cui si desidera eliminare i record della cronologia. @job_name è sysname, con il valore predefinito NULL. È necessario specificare @job_id o @job_name , ma non è possibile specificare entrambi.

I membri del ruolo predefinito del server sysadmin o dei membri del ruolo predefinito del database SQLAgentOperatorRole possono essere eseguiti sp_purge_jobhistory senza specificare un @job_name o un @job_id. Quando gli utenti sysadmin non specificano questi argomenti, la cronologia dei processi per tutti i processi locali e multiserver viene eliminata entro il tempo specificato da @oldest_date. Quando gli utenti di SQLAgentOperatorRole non specificano questi argomenti, la cronologia dei processi per tutti i processi locali viene eliminata entro il tempo specificato da @oldest_date.

[ @job_id = ] 'job_id'

Numero di identificazione del processo dei record da eliminare. @job_id è uniqueidentifier, con un valore predefinito .NULL È necessario specificare @job_id o @job_name , ma non è possibile specificare entrambi.

Vedere la nota nella descrizione di @job_name per informazioni su come gli utenti sysadmin o SQLAgentOperatorRole possono usare questo argomento.

[ @oldest_date = ] oldest_date

Il record meno recente da conservare nella cronologia. @oldest_date è datetime, con il valore predefinito NULL. Quando si specifica oldest_date , sp_purge_jobhistory rimuove solo i record meno recenti del valore specificato.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Set di risultati

Nessuno.

Osservazioni:

Al sp_purge_jobhistory termine, viene restituito un messaggio.

Questa stored procedure condivide il nome di con un oggetto simile per il servizio Processi elastici di sp_purge_jobhistory Azure per database SQL di Azure. Per informazioni sulla versione dei processi elastici, vedere jobs.sp_purge_jobhistory (processi elastici di Azure).

Autorizzazioni

Per impostazione predefinita, solo i membri del ruolo predefinito del server sysadmin o il ruolo predefinito del database SQLAgentOperatorRole possono eseguire questa stored procedure. I membri di sysadmin possono eliminare la cronologia dei processi per tutti i processi locali e multiserver. I membri di SQLAgentOperatorRole possono eliminare la cronologia dei processi solo per tutti i processi locali.

Ad altri utenti, inclusi i membri di SQLAgentUserRole e i membri di SQLAgentReaderRole, è necessario concedere in modo esplicito 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 msdb database. Per informazioni dettagliate sulle autorizzazioni, vedere Ruoli predefiniti del database di SQL Server Agent.

Esempi

R. 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

Solo i membri del ruolo predefinito del server sysadmin e i membri di SQLAgentOperatorRole possono rimuovere la cronologia per tutti i processi. Quando gli utenti sysadmin eseguono questa stored procedure senza parametri, la cronologia dei processi per tutti i processi locali e multiserver viene rimossa. Quando gli utenti di SQLAgentOperatorRole eseguono questa stored procedure senza parametri, solo la cronologia dei processi per tutti i processi locali viene rimossa.

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