sysmail_delete_mailitems_sp (Transact-SQL)

Окончательно удаляет сообщения электронной почты из внутренних таблиц компонента Database Mail.

Значок ссылки на раздел Синтаксические обозначения Transact-SQL

Синтаксис

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

Аргументы

  • [ @sent_before= ] 'sent_before'
    Удаляет сообщения электронной почты до даты и времени, указанных в аргументе sent_before. sent_before имеет тип datetime и значение по умолчанию NULL. Значение NULL соответствует всем датам.

  • [ @sent_status= ] 'sent_status'
    Удаляет сообщения электронной почты типа, заданного аргументом sent_status. Аргумент sent_status имеет тип varchar(8) и не имеет значения по умолчанию. Допустимые значения: sent, unsent, retrying и failed. Значение NULL соответствует всем состояниям.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Сообщения компонента Database Mail и их вложения хранятся в базе данных msdb. Сообщения должны периодически удаляться, чтобы предотвратить разрастание базы данных msdb больше, чем ожидается, и для выполнения программы по хранению документов организации. Используйте хранимую процедуру sysmail_delete_mailitems_sp для окончательного удаления сообщений электронной почты из таблиц компонента Database Mail. Необязательный аргумент позволяет удалить только старые сообщения, указав дату и время. Сообщения, которые старше этого аргумента, будут удалены. Другие необязательные аргументы позволяют удалить только сообщения определенного типа, указанного аргументом sent_status. Аргумент должен быть предоставлен для @sent_before или @sent_status. Для удаления всех сообщений используйте выражение @sent_before = getdate().

Удаление сообщений электронной почты также удаляет вложения, связанные с этими сообщениями. Удаление сообщений не удаляет соответствующие записи из представления sysmail_event_log. Используйте процедуру sysmail_delete_log_sp для удаления записей из журнала.

Разрешения

По умолчанию разрешение на выполнение этой хранимой процедуры предоставлено членам предопределенной роли сервера sysadmin и DatabaseMailUserRole. Члены предопределенной роли сервера sysadmin могут выполнить эту процедуру для удаления сообщений электронной почты, посланных всеми пользователями. Члены роли DatabaseMailUserRole могут удалять сообщения почты, посланные только этим пользователем.

Примеры

А.Удаление всех сообщений электронной почты

Следующий пример удаляет все сообщения электронной почты в системе компонента Database Mail.

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

Б.Удаление самых старых сообщений электронной почты

Следующий пример удаляет сообщения электронной почты в журнале компонента Database Mail, принятые раньше October 9, 2005.

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

В.Удаление всех сообщений электронной почты указанного типа

Следующий пример удаляет все неудачные сообщения электронной почты в журнале компонента 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)

Основные понятия

Создание задания агента SQL Server по архивации сообщений компонента Database Mail и журналов событий базы данных