Delen via


sysmail_delete_mailitems_sp (Transact-SQL)

Van toepassing op:SQL Server

Hiermee worden e-mailberichten definitief verwijderd uit de interne tabellen Database Mail.

Transact-SQL syntaxis-conventies

Syntaxis

sysmail_delete_mailitems_sp [ [ @sent_before = ] 'sent_before' ]
    [ , [ @sent_status = ] 'sent_status' ]
[ ; ]

Argumenten

[ @sent_before = ] 'sent_before'

Hiermee verwijdert u e-mailberichten tot de datum en tijd die is opgegeven als het argument @sent_before . @sent_before is datum/tijd met NULL als standaardinstelling. NULL geeft alle datums aan.

[ @sent_status = ] 'sent_status'

Hiermee verwijdert u e-mailberichten van het type dat is opgegeven door @sent_status. @sent_status is varchar(8) zonder standaardinstelling. Geldige vermeldingen zijn:

  • sent
  • unsent
  • retrying
  • failed.

NULL geeft alle statussen aan.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Opmerkingen

Database-e-mailberichten en hun bijlagen worden opgeslagen in de msdb database. Berichten moeten periodiek worden verwijderd om te voorkomen dat msdb ze groter worden dan verwacht en om te voldoen aan het documentretentieprogramma van uw organisatie. Gebruik de sysmail_delete_mailitems_sp opgeslagen procedure om e-mailberichten definitief uit de database-e-mailtabellen te verwijderen. Met een optioneel argument kunt u alleen oudere e-mailberichten verwijderen door een datum en tijd op te geven. E-mailberichten die ouder zijn dan dat argument worden verwijderd. Met een ander optioneel argument kunt u alleen e-mailberichten van een bepaald type verwijderen, opgegeven als het argument @sent_status . U moet een argument opgeven voor @sent_before of @sent_status. Als u alle berichten wilt verwijderen, gebruikt u @sent_before = GETDATE();.

Als u e-mail verwijdert, worden ook bijlagen met betrekking tot deze berichten verwijderd. Als u e-mail verwijdert, worden de bijbehorende vermeldingen niet verwijderd in sysmail_event_log. Gebruik sysmail_delete_log_sp om items uit het logboek te verwijderen.

Machtigingen

Deze opgeslagen procedure wordt standaard verleend voor uitvoering aan leden van de vaste serverfunctie sysadmin en DatabaseMailUserRole. Leden van de vaste serverrol sysadmin kunnen deze procedure uitvoeren om e-mailberichten te verwijderen die door alle gebruikers zijn verzonden. Leden van DatabaseMailUserRole kunnen alleen e-mails verwijderen die door die gebruiker zijn verzonden.

Voorbeelden

Eén. Alle e-mailberichten verwijderen

In het volgende voorbeeld worden alle e-mailberichten in het Database Mail-systeem verwijderd.

DECLARE @GETDATE AS DATETIME;

SET @GETDATE = GETDATE();

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp
    @sent_before = @GETDATE;
GO

B. De oudste e-mailberichten verwijderen

In het volgende voorbeeld worden e-mailberichten verwijderd uit het database-e-maillogboek die ouder zijn dan 9 oktober 2022.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = 'October 9, 2022';
GO

C. Alle e-mailberichten van een bepaald type verwijderen

In het volgende voorbeeld worden alle mislukte e-mailberichten in het database-e-maillogboek verwijderd.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_status = 'failed';
GO