sysmail_delete_mailitems_sp (Transact-SQL)

Elimina definitivamente messaggi di posta elettronica dalle tabelle interne di Posta elettronica database.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

sysmail_delete_mailitems_sp  [ [ @sent_before = ] 'sent_before' ]
    [ , [ @sent_status = ] 'sent_status' ]

Argomenti

  • [ @sent_before= ] 'sent_before'
    Vengono eliminati i messaggi di posta elettronica fino alla data e all'ora specificate nell'argomento sent_before. sent_before è di tipo datetime e il valore predefinito è NULL, che indica tutte le date.

  • [ @sent_status= ] 'sent_status'
    Elimina i messaggi di posta elettronica del tipo specificato in sent_status. sent_status è di tipo varchar(8) e non prevede alcun valore predefinito. I possibili valori sono sent, unsent, retrying e failed. NULL indica tutti gli stati.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

I messaggi di Posta elettronica database e i relativi allegati sono archiviati nel database msdb. È consigliabile eliminare periodicamente alcuni messaggi per evitare che le dimensioni di msdb aumentino oltre il livello previsto e per rispettare il programma di memorizzazione dei documenti definito nella propria organizzazione. Utilizzare la stored procedure sysmail_delete_mailitems_sp per eliminare definitivamente messaggi di posta elettronica dalle tabelle di Posta elettronica database. Un argomento facoltativo consente di eliminare solo i messaggi di posta elettronica meno recenti tramite l'impostazione di una data e un'ora. I messaggi di posta elettronica con una data anteriore a quella specificata nell'argomento verranno eliminati. Un altro argomento facoltativo consente di eliminare solo i messaggi di posta elettronica di un determinato tipo, specificato nell'argomento sent_status. È necessario specificare un argomento per @sent_before o per @sent_status. Per eliminare tutti i messaggi, utilizzare @sent_before = getdate().

L'eliminazione di un messaggio di posta elettronica comporta la rimozione degli allegati correlati a tale messaggio, ma non la rimozione delle voci corrispondenti in sysmail_event_log. Per eliminare elementi dal log, utilizzare sysmail_delete_log_sp.

Autorizzazioni

Per impostazione predefinita, l'autorizzazione per l'esecuzione di questa stored procedure viene concessa ai membri del ruolo predefinito del server sysadmin e di DatabaseMailUserRole. I membri del ruolo predefinito del server sysadmin possono eseguire questa procedura per eliminare i messaggi di posta elettronica inviati da tutti gli utenti. I membri di DatabaseMailUserRole possono eliminare solo i messaggi di posta elettronica che hanno inviato personalmente.

Esempi

A.Eliminazione di tutti i messaggi di posta elettronica

Nell'esempio seguente vengono eliminati tutti i messaggi di posta elettronica nel sistema di Posta elettronica database.

DECLARE @GETDATE datetimeSET @GETDATE = GETDATE()EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;GO

B.Eliminazione dei messaggi di posta elettronica meno recenti

Nell'esempio seguente vengono eliminati i messaggi di posta elettronica nel log di Posta elettronica database con una data anteriore a October 9, 2005.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp 
    @sent_before = 'October 9, 2005' ;
GO

C.Eliminazione di tutti i messaggi di posta elettronica di un determinato tipo

Nell'esempio seguente vengono eliminati dal log di Posta elettronica database tutti i messaggi di posta elettronica che non è stato possibile inviare.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp 
    @sent_status = 'failed' ;
GO

Vedere anche

Riferimento

sysmail_allitems (Transact-SQL)

sysmail_event_log (Transact-SQL)

sysmail_mailattachments (Transact-SQL)

Concetti

Creazione di un processo di SQL Server Agent per l'archiviazione di messaggi e log eventi di Posta elettronica database