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