Freigeben über


sysmail_delete_mailitems_sp (Transact-SQL)

Aktualisiert: 14. April 2006

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 des von sent_status angegebenen Typs. sent_status ist vom Datentyp varchar(8) und hat 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. Ab SQL Server 2005 Service Pack 1 müssen Sie entweder ein Argument für @sent_before oder für @sent_status angeben. Beide Argumente dürfen nicht NULL sein.

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 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-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

Siehe auch

Verweis

sysmail_allitems (Transact-SQL)
sysmail_event_log (Transact-SQL)
sysmail_mailattachments (Transact-SQL)

Andere Ressourcen

Vorgehensweise: Erstellen eines Auftrags des SQL Server-Agents zum Archivieren von Datenbank-E-Mail-Nachrichten und Ereignisprotokollen
Problembehandlung bei Datenbank-E-Mail

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

14. April 2006

Neuer Inhalt:
  • Es wurde die Anforderung von Service Pack 1 hinzugefügt, dass eines der Argumente bereitgestellt werden muss.