sysmail_delete_mailitems_sp (Transact-SQL)

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

Themenlink (Symbol)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 sent_before-Argument angegeben wurden. sent_before ist vom Datentyp datetime und hat den Standardwert NULL. NULL steht für alle Daten.

  • [ @sent_status= ] 'sent_status'
    Löscht E-Mails mit dem durch sent_status angegebenen Typ. sent_status ist vom Datentyp varchar(8) und besitzt keinen Standardwert. Gültige Einträge sind sent, unsent, retrying und failed. NULL steht für alle Status.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

Datenbank-E-Mail-Nachrichten sowie deren Anlagen werden in der msdb-Datenbank gespeichert. Nachrichten sollten in regelmäßigen Abständen gelöscht werden, um zu verhindern, dass die msdb-Datenbank stärker vergrößert wird als erwartet, und um die in Ihrer Organisation geltenden Richtlinie für die Beibehaltung von Dokumenten zu befolgen. Verwenden Sie die gespeicherte Prozedur sysmail_delete_mailitems_sp, um E-Mail-Nachrichten dauerhaft 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. Mithilfe eines weiteren optionalen Arguments können Sie nur E-Mails eines bestimmten Typs löschen, die als sent_status-Argument angegeben werden. Sie müssen entweder ein Argument für @ sent_before oder für @ sent_status angeben. Um alle Meldungen zu löschen, verwenden Sie @ sent_before = getdate ().

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

Berechtigungen

Standardmäßig wird die Berechtigung zum Ausführen dieser gespeicherten Prozedur den Mitgliedern der festen Serverrolle sysadmin und der Datenbankrolle DatabaseMailUserRole gewährt. Mitglieder der festen Serverrolle sysadmin können diese Prozedur ausführen, um von allen Benutzern gesendete E-Mails zu löschen. Mitglieder der Datenbankrolle DatabaseMailUserRole können nur die von diesem Benutzer gesendeten E-Mails löschen.

Beispiele

A. Löschen aller E-Mails

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

DECLARE @GETDATE datetimeSET @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-Mail-Nachrichten im Datenbank-E-Mail-Protokoll gelöscht, die vor dem Datum October 9, 2005 gesendet wurden.

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

C. Löschen aller Ereignisse eines bestimmten Typs

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

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