Compartilhar via


sysmail_delete_mailitems_sp (Transact-SQL)

Aplica-se: 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 @sent_before argumento. @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

Banco de dados As mensagens do 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 cumprir 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 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 que você exclua 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 email também exclui anexos relacionados a essas mensagens. A exclusão de e-mail não exclui as entradas correspondentes no sysmail_event_log. Use sysmail_delete_log_sp para excluir itens do registro.

Permissões

Por padrão, esse procedimento armazenado é concedido para execução a membros da função de servidor fixa sysadmin e DatabaseMailUserRole. Os membros da função de servidor fixa sysadmin podem executar esse 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