sysmail_delete_mailitems_sp (Transact-SQL)

更新日期: 2006 年 4 月 14 日

从数据库邮件内部表中永久删除电子邮件。

主题链接图标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),无默认值。有效项为 sentunsentretryingfailed。NULL 指示所有状态。

返回代码值

0(成功)或 1(失败)

备注

数据库邮件及其附件存储在 msdb 数据库中。应该定期删除邮件以免 msdb 的增长超过预期大小,并且符合您单位的文档保持期计划。使用 sysmail_delete_mailitems_sp 存储过程可从数据库邮件表中永久删除电子邮件。某个可选参数通过提供日期和时间,允许您仅删除较早的电子邮件。早于该参数的电子邮件将被删除。另一个可选参数允许您仅删除作为 sent_status 参数指定的特定类型的电子邮件。从 SQL Server 2005 Service Pack 1 开始,必须为 @sent_before@sent_status 提供参数。这两个参数都不能为 NULL。

删除电子邮件也会删除与这些邮件相关的附件。删除电子邮件不会删除 sysmail_event_log 中的对应项。使用 sysmail_delete_log_sp 可从日志中删除项。

权限

默认情况下,授权 sysadmin 固定服务器角色和 DatabaseMailUserRole 的成员执行此存储过程。sysadmin 固定服务器角色的成员可执行此存储过程来删除所有用户发送的电子邮件。DatabaseMailUserRole 的成员只能删除该用户发送的电子邮件。

示例

A. 删除所有电子邮件

以下示例删除数据库邮件系统中的所有电子邮件。

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

B. 删除最早的电子邮件

以下示例将删除数据库邮件日志中 October 9, 2005 之前的电子邮件。

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

C. 删除特定类型的所有电子邮件

以下示例删除数据库邮件日志中所有失败的电子邮件。

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 代理作业以存档数据库邮件和事件日志
对数据库邮件进行故障排除

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

新增内容:
  • 增加了 Service Pack 1 的一个要求,即必须提供一个参数。