Share via


sysmail_delete_mailitems_sp (Transact-SQL)

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

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • [ @sent_before= ] 'sent_before'
    Exclui emails até a data e hora fornecidas pelo argumento sent_before. sent_before é datetime com NULL como padrão. NULL indica todas as datas.

  • [ @sent_status= ] 'sent_status'
    Exclui emails do tipo especificado pelo sent_status. sent_status é varchar(8) sem padrão. As entradas válidas são sent, unsent, retrying e failed. NULL indica todos os status.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

As mensagens do Database Mail são armazenadas no banco de dados msdb. As mensagens devem ser excluídas periodicamente para evitar que msdb fique maior do que o esperado e para estar de acordo com o programa de retenção de documentos da organização. Use o procedimento armazenado sysmail_delete_mailitems_sp para excluir mensagens de email permanentemente 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 emails 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. Ela não exclui as entradas correspondentes em 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 por 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

A. Excluindo todos os emails

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

DECLARE @GETDATE datetimeSET @GETDATE = GETDATE()EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;GO

B. Excluindo os emails mais antigos

O exemplo a seguir exclui os emails do Database Mail anteriores a October 9, 2005.

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

C. Excluindo todos os emails de um determinado tipo

O exemplo a seguir exclui todos os emails que falharam do log do Database Mail.

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