Condividi tramite


sysmail_delete_mailitems_sp (Transact-SQL)

Si applica a: SQL Server

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

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @sent_before = ] 'sent_before'

Elimina i messaggi di posta elettronica fino alla data e all'ora specificate come argomento @sent_before . @sent_before è datetime con NULL come impostazione predefinita. NULL indica tutte le date.

[ @sent_status = ] 'sent_status'

Elimina i messaggi di posta elettronica del tipo specificato da @sent_status. @sent_status è varchar(8) senza impostazione predefinita. Le voci valide sono:

  • sent
  • unsent
  • retrying
  • failed.

NULL indica tutti gli stati.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

Posta elettronica database messaggi e i relativi allegati vengono archiviati nel msdb database. I messaggi devono essere eliminati periodicamente per evitare msdb che aumentino di dimensioni maggiori del previsto e siano conformi al programma di conservazione dei documenti dell'organizzazione. Utilizzare la sysmail_delete_mailitems_sp stored procedure per eliminare definitivamente i messaggi di posta elettronica dalle tabelle 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, specificati come argomento @sent_status . È necessario specificare un argomento per @sent_before o @sent_status. Per eliminare tutti i messaggi, usare @sent_before = GETDATE();.

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

Autorizzazioni

Per impostazione predefinita, questa stored procedure viene concessa per l'esecuzione ai membri del ruolo predefinito del server sysadmin e 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 inviati dall'utente.

Esempi

R. Elimina 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 DATETIME;

SET @GETDATE = GETDATE();

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;
GO

B. Eliminare i messaggi di posta elettronica meno recenti

Nell'esempio seguente vengono eliminati i messaggi di posta elettronica nel log Posta elettronica database precedenti al 9 ottobre 2022.

EXEC msdb.dbo.sysmail_delete_mailitems_sp
    @sent_before = 'October 9, 2022';
GO

C. Eliminare 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.

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