sysmail_delete_mailitems_sp (Transact-SQL)

Gilt für:SQL Server

Löscht E-Mail-Nachrichten dauerhaft aus den internen Tabellen der Datenbank-E-Mail.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @sent_before = ] 'sent_before'

Löscht E-Mails bis zu dem Datum und der Uhrzeit, die als argument @sent_before angegeben wird. @sent_before ist "datetime" mit NULL als Standard. NULL steht für alle Daten.

[ @sent_status = ] 'sent_status'

Löscht E-Mails des typs, der durch @sent_status angegeben wird. @sent_status ist varchar(8) ohne Standard. Gültige Einträge sind:

  • sent
  • unsent
  • retrying
  • failed.

NULL steht für alle Status.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Hinweise

Datenbank-E-Mail Nachrichten und deren Anlagen werden in der msdb Datenbank gespeichert. Nachrichten sollten in regelmäßigen Abständen gelöscht werden, um zu verhindern, dass msdb sie größer als erwartet werden und dem Aufbewahrungsprogramm Ihrer Organisation entsprechen. Verwenden Sie die sysmail_delete_mailitems_sp gespeicherte Prozedur, um E-Mail-Nachrichten endgültig aus den Datenbank-E-Mail Tabellen zu löschen. Mithilfe eines optionalen Arguments können Sie nur ältere E-Mails löschen, indem Sie ein Datum und eine Uhrzeit angeben. E-Mails, die älter sind als dieses Argument, werden gelöscht. Ein weiteres optionales Argument ermöglicht es Ihnen, nur E-Mails eines bestimmten Typs zu löschen, die als @sent_status Argument angegeben sind. Sie müssen ein Argument entweder für @sent_before oder @sent_status angeben. Um alle Nachrichten zu löschen, verwenden Sie @sent_before = GETDATE();.

Mit den E-Mails werden auch die Anlagen gelöscht, die zu diesen Nachrichten gehören. Beim Löschen von E-Mails werden die entsprechenden Einträge nicht gelöscht.sysmail_event_log Verwenden Sie sysmail_delete_log_sp , um Elemente aus dem Protokoll zu löschen.

Berechtigungen

Standardmäßig wird diese gespeicherte Prozedur für die Ausführung von Mitgliedern aus der festen Serverrolle "sysadmin " und "DatabaseMailUserRole" gewährt. Mitglieder der festen Serverrolle "sysadmin " können dieses Verfahren ausführen, um von allen Benutzern gesendete E-Mails zu löschen. Mitglieder von DatabaseMailUserRole können nur E-Mails löschen, die von diesem Benutzer gesendet wurden.

Beispiele

.A Alle E-Mails löschen

Im folgenden Beispiel werden alle E-Mails im Datenbank-E-Mail-System gelöscht.

DECLARE @GETDATE DATETIME;

SET @GETDATE = GETDATE();

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

B. Löschen der ältesten E-Mails

Im folgenden Beispiel werden E-Mails im Datenbank-E-Mail-Protokoll gelöscht, die älter als 9. Oktober 2022 sind.

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

C. Löschen aller E-Mails eines bestimmten Typs

Im folgenden Beispiel werden alle fehlerhaften E-Mails im Datenbank-E-Mail-Protokoll gelöscht.

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