Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Tar bort e-postmeddelanden permanent från de interna databasposttabellerna.
Transact-SQL syntaxkonventioner
Syntax
sysmail_delete_mailitems_sp [ [ @sent_before = ] 'sent_before' ]
[ , [ @sent_status = ] 'sent_status' ]
[ ; ]
Argumentpunkter
[ @sent_before = ] "sent_before"
Tar bort e-postmeddelanden fram till det datum och den tid som anges som argumentet @sent_before .
@sent_before är datetime med NULL som standard.
NULL anger alla datum.
[ @sent_status = ] "sent_status"
Tar bort e-postmeddelanden av den typ som anges av @sent_status. @sent_status är varchar(8) utan standard. Giltiga poster är:
sentunsentretrying-
failed.
NULL anger alla statusar.
Returnera kodvärden
0 (lyckades) eller 1 (fel).
Anmärkningar
Databas-e-postmeddelanden och deras bifogade filer lagras i msdb databasen. Meddelanden bör regelbundet tas bort för att förhindra msdb att större än förväntat och för att följa organisationens program för dokumentkvarhållning. Använd den sysmail_delete_mailitems_sp lagrade proceduren för att permanent ta bort e-postmeddelanden från databasposttabellerna. Med ett valfritt argument kan du bara ta bort äldre e-postmeddelanden genom att ange ett datum och en tid. E-postmeddelanden som är äldre än argumentet tas bort. Med ett annat valfritt argument kan du bara ta bort e-postmeddelanden av en viss typ, som anges som argumentet @sent_status . Du måste ange ett argument för @sent_before eller @sent_status. Om du vill ta bort alla meddelanden använder du @sent_before = GETDATE();.
Om du tar bort e-post tas även bifogade filer som är relaterade till dessa meddelanden bort. Om du tar bort e-post tas inte motsvarande poster bort i sysmail_event_log. Använd sysmail_delete_log_sp för att ta bort objekt från loggen.
Behörigheter
Som standard beviljas den här lagrade proceduren för körning till medlemmar utanför den fasta sysadmin-serverrollen och DatabaseMailUserRole. Medlemmar i den fasta serverrollen sysadmin kan köra den här proceduren för att ta bort e-postmeddelanden som skickas av alla användare. Medlemmar i DatabaseMailUserRole kan bara ta bort e-postmeddelanden som skickas av användaren.
Exempel
A. Ta bort alla e-postmeddelanden
I följande exempel tas alla e-postmeddelanden bort i Database Mail-systemet.
DECLARE @GETDATE AS DATETIME;
SET @GETDATE = GETDATE();
EXECUTE msdb.dbo.sysmail_delete_mailitems_sp
@sent_before = @GETDATE;
GO
B. Ta bort de äldsta e-postmeddelandena
I följande exempel tas e-postmeddelanden bort i databasens e-postlogg som är äldre än den 9 oktober 2022.
EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = 'October 9, 2022';
GO
C. Ta bort alla e-postmeddelanden av en viss typ
I följande exempel tas alla misslyckade e-postmeddelanden bort i databasens e-postlogg.
EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_status = 'failed';
GO