sysmail_delete_mailitems_sp (Transact-SQL)
Aktualisiert: 14. April 2006
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 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 |
|