Partager via


sysmail_delete_mailitems_sp (Transact-SQL)

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

S'applique à : SQL Server (SQL Server 2008 via la version actuelle).

Icône Lien de rubrique 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 messages électroniques antérieurs à la date et l'heure spécifiées par l'argument sent_before. sent_before est de type datetime avec NULL comme valeur par défaut. La valeur NULL correspond à toutes les dates.

  • [ @sent_status= ] 'sent_status'
    Supprime les messages électroniques du type spécifié par sent_status. sent_status est de type varchar(8) et n'a pas de valeur par défaut. Les entrées valides sont sent, unsent, retrying et failed. La valeur NULL correspond à tous les états.

Valeurs des codes de retour

0 (réussite) ou 1 (échec)

Notes

Les messages de la messagerie de base de données et leurs pièces jointes sont stockés dans la base de données msdb. Les messages doivent être supprimés périodiquement pour éviter que msdb ne devienne trop volumineuse et pour respecter la politique de rétention de documents de votre entreprise. Utilisez la procédure stockée sysmail_delete_mailitems_sp pour supprimer définitivement des messages électroniques des tables de la 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 un certain type de message électronique, spécifié par l'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 d'un message n'entraîne pas la suppression des entrées correspondantes dans le journal sysmail_event_log. Utilisez la procédure sysmail_delete_log_sp pour supprimer des éléments du journal.

Autorisations

Par défaut, les membres du rôle serveur fixe sysadmin et du rôle DatabaseMailUserRole sont autorisés à exécuter cette procédure stockée. Les membres du rôle serveur fixe sysadmin peuvent exécuter cette procédure pour supprimer des messages envoyés par n'importe quel utilisateur. Les membres du rôle DatabaseMailUserRole peuvent uniquement supprimer les messages envoyés par cet utilisateur.

Exemples

A.Suppression de tous les messages électroniques

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.Suppression des messages électroniques les plus anciens

L'exemple suivant supprime les messages électroniques du journal de la messagerie de base de données qui sont antérieurs au October 9, 2005.

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

C.Suppression d'un certain type de message électronique

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

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

Voir aussi

Référence

sysmail_allitems (Transact-SQL)

sysmail_event_log (Transact-SQL)

sysmail_mailattachments (Transact-SQL)

Concepts

Créer un travail d'Agent SQL Server pour archiver les messages et les journaux d'événements de la messagerie de base de données