共用方式為


sysmail_delete_mailitems_sp (Transact-SQL)

更新: 2006 年 4 月 14 日

從 Database Mail 內部資料表中永久刪除電子郵件訊息。

主題連結圖示Transact-SQL 語法慣例

語法

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

引數

  • [ @sent_before= ] 'sent_before'
    刪除以 sent_before 引數提供的日期和時間以前的電子郵件。sent_beforedatetime,預設值是 NULL。NULL 表示所有日期。
  • [ @sent_status= ] 'sent_status'
    刪除 sent_status 所指定類型的電子郵件。sent_statusvarchar(8),沒有預設值。有效的項目是 sentunsentretrying 以及 failed。NULL 表示所有狀態。

傳回碼值

0 (成功) 或 1 (失敗)

備註

Database Mail 訊息及其附加檔案儲存在 msdb 資料庫中。訊息應定期刪除,以防止 msdb 成長大於預期,並符合 貴組織的文件保留計劃。使用 sysmail_delete_mailitems_sp 預存程序可從 Database Mail 資料表中永久刪除電子郵件訊息。一個選擇性引數可藉由提供日期和時間,讓您只刪除較舊的電子郵件。比該引數舊的電子郵件會被刪除。另一個選擇性引數可讓您只刪除 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. 刪除所有電子郵件

下列範例會刪除 Database Mail 系統中的所有電子郵件。

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

B. 刪除最舊的電子郵件

下列範例會刪除 Database Mail 記錄中 October 9, 2005 以前的電子郵件。

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

C. 刪除特定類型的所有電子郵件

下列範例會刪除 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 Agent 作業以封存 Database Mail 訊息和事件記錄檔
Database Mail 疑難排解

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

新增內容:
  • 加入必須提供其中一個引數的 Service Pack 1 需求。