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" NULL
standardmäßig. NULL
gibt alle Datumsangaben an.
[ @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
(erfolgreich) 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