共用方式為


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 的成員只能刪除該使用者所傳送的電子郵件。

範例

A.刪除所有電子郵件

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

DECLARE @GETDATE datetimeSET @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 訊息及事件記錄檔