Partilhar via


sysmail_delete_mailitems_sp (Transact-SQL)

Aplica-se a:SQL Server

Exclui permanentemente mensagens de email das tabelas internas do Database Mail.

Transact-SQL convenções de sintaxe

Sintaxe

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

Argumentos

@sent_before [ = ] «sent_before»

Exclui e-mails até a data e hora fornecidas como argumento @sent_before . @sent_before é datetime com NULL como padrão. NULL indica todas as datas.

@sent_status [ = ] «sent_status»

Exclui e-mails do tipo especificado por @sent_status. @sent_status é varchar(8) sem padrão. As inscrições válidas são:

  • sent
  • unsent
  • retrying
  • failed.

NULL indica todos os status.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

As mensagens do Database Mail e seus anexos são armazenados no msdb banco de dados. As mensagens devem ser excluídas periodicamente para evitar msdb que cresçam mais do que o esperado e para estar em conformidade com o programa de retenção de documentos da sua organização. Use o sysmail_delete_mailitems_sp procedimento armazenado para excluir permanentemente mensagens de email das tabelas do Database Mail. Um argumento opcional permite que você exclua apenas e-mails mais antigos, fornecendo uma data e hora. E-mails mais antigos do que esse argumento serão excluídos. Outro argumento opcional permite excluir apenas e-mails de um determinado tipo, especificado como o argumento @sent_status . Você deve fornecer um argumento para @sent_before ou @sent_status. Para excluir todas as mensagens, use @sent_before = GETDATE();.

A exclusão de e-mails também exclui anexos relacionados a essas mensagens. A exclusão de e-mails não exclui as entradas correspondentes no sysmail_event_log. Use sysmail_delete_log_sp para excluir itens do log.

Permissões

Por padrão, esse procedimento armazenado é concedido para execução a membros fora da função de servidor fixa sysadmin e DatabaseMailUserRole. Os membros da função de servidor fixa sysadmin podem executar este procedimento para excluir e-mails enviados por todos os usuários. Os membros de DatabaseMailUserRole só podem excluir emails enviados por esse usuário.

Exemplos

Um. Excluir todos os e-mails

O exemplo a seguir exclui todos os emails no sistema Database Mail.

DECLARE @GETDATE AS DATETIME;

SET @GETDATE = GETDATE();

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

B. Excluir os e-mails mais antigos

O exemplo a seguir exclui emails no log do Database Mail anteriores a 9 de outubro de 2022.

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

C. Excluir todos os e-mails de um determinado tipo

O exemplo a seguir exclui todos os emails com falha no log do Database Mail.

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