Dela via


sysmail_delete_mailitems_sp (Transact-SQL)

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:

  • sent
  • unsent
  • retrying
  • 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