Поделиться через


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 соответствует всем датам.

  • [ @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