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


sysmail_delete_mailitems_sp (Transact-SQL)

Изменения: 14 апреля 2006 г.

Окончательно удаляет сообщения электронной почты из внутренних таблиц компонента 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. Начиная с SQL Server 2005 с пакетом обновления 1 (SP1), необходимо предоставить аргумент или для @sent_before, или для @sent_status. Оба аргумента не могут иметь значения NULL.

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

Разрешения

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

Примеры

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

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

DECLARE @GETDATE datetime
SET @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 и журналов событий базы данных
Устранение неполадок в работе компонента Database Mail

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Новое содержимое
  • Добавлено требование о необходимости указания одного из аргументов, появившееся в пакете обновления 1 (SP1).