sysmail_delete_mailitems_sp (Transact-SQL)
Exclui permanentemente mensagens de email das tabelas internas do Database Mail.
Aplica-se a: SQL Server (do SQL Server 2008 à versão atual). |
Convenções da sintaxe Transact-SQL
sysmail_delete_mailitems_sp [ [ @sent_before = ] 'sent_before' ]
[ , [ @sent_status = ] 'sent_status' ]
[ @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.
0 (êxito) ou 1 (falha)
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.
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.
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
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
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
sysmail_allitems (Transact-SQL)
sysmail_event_log (Transact-SQL)
sysmail_mailattachments (Transact-SQL)
Criar um trabalho do SQL Server Agent para arquivar mensagens do Database Mail e logs de eventos