sysmail_delete_mailitems_sp (Transact-SQL)

Aplica-se a:SQL Server

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

Convenções de sintaxe de Transact-SQL

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 o 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 entradas válidas são:

  • sent
  • unsent
  • retrying
  • failed.

NULL indica todos os status.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

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 que cresçam mais do que msdb o esperado e para estar em conformidade com o programa de retenção de documentos de suas organizações. Use o sysmail_delete_mailitems_sp procedimento armazenado para excluir permanentemente mensagens de email das tabelas do Database Mail. Um argumento opcional permite excluir somente os emails mais antigos fornecendo uma data e hora. Os emails mais antigos que o argumento serão excluídos. Outro argumento opcional permite excluir apenas e-mails de um determinado tipo, especificados 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 email 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 emails enviados por todos os usuários. Os membros de DatabaseMailUserRole só podem excluir emails enviados por esse usuário.

Exemplos

R. Excluir todos os e-mails

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

DECLARE @GETDATE 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.

EXEC 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 que falharam do log do Database Mail.

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