Partager via


sysmail_delete_mailitems_sp (Transact-SQL)

S'applique à : SQL Server

Supprime définitivement des messages électroniques des tables internes de la messagerie de base de données.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @sent_before = ] 'sent_before'

Supprime les e-mails jusqu’à la date et à l’heure fournies en tant qu’argument @sent_before . @sent_before est datetime avec NULL comme valeur par défaut. NULL indique toutes les dates.

[ @sent_status = ] 'sent_status'

Supprime les e-mails du type spécifié par @sent_status. @sent_status est varchar(8) sans valeur par défaut. Les entrées valides sont les suivantes :

  • sent
  • unsent
  • retrying
  • failed.

La valeur NULL correspond à tous les états.

Valeurs des codes de retour

0 (réussite) or 1 (échec).

Notes

Les messages de messagerie de base de données et leurs pièces jointes sont stockés dans la msdb base de données. Les messages doivent être supprimés régulièrement pour éviter msdb de croître plus grand que prévu et de se conformer au programme de rétention des documents de votre organisation. Utilisez la sysmail_delete_mailitems_sp procédure stockée pour supprimer définitivement les messages électroniques des tables de messagerie de base de données. Un argument facultatif vous permet de supprimer uniquement les messages les plus anciens en fournissant une date et une heure. Les messages antérieurs à cet argument sont alors supprimés. Un autre argument facultatif vous permet de supprimer uniquement les e-mails d’un certain type, spécifié comme argument @sent_status . Vous devez fournir un argument pour @sent_before ou @sent_status. Pour supprimer tous les messages, utilisez @sent_before = GETDATE();.

La suppression d'un message entraîne également la suppression des pièces jointes qui sont associées à ce message. La suppression de courrier électronique ne supprime pas les entrées correspondantes dans sysmail_event_log. Utilisez sysmail_delete_log_sp pour supprimer des éléments du journal.

autorisations

Par défaut, cette procédure stockée est accordée pour l’exécution aux membres du rôle serveur fixe sysadmin et DatabaseMailUserRole. Les membres du rôle serveur fixe sysadmin peuvent exécuter cette procédure pour supprimer les e-mails envoyés par tous les utilisateurs. Les membres de DatabaseMailUserRole ne peuvent supprimer que les e-mails envoyés par cet utilisateur.

Exemples

R. Supprimer tous les e-mails

L'exemple suivant supprime tous les messages électroniques du système de la messagerie de base de données.

DECLARE @GETDATE DATETIME;

SET @GETDATE = GETDATE();

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

B. Supprimer les courriers électroniques les plus anciens

L’exemple suivant supprime les e-mails dans le journal de messagerie de base de données antérieur au 9 octobre 2022.

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

C. Supprimer tous les e-mails d’un certain type

L'exemple suivant supprime tous les messages électroniques qui ont échoué du système de la messagerie de base de données.

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