共用方式為


sysmail_delete_mailitems_sp (Transact-SQL)

適用於:SQL Server

從 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 從記錄中刪除專案。

權限

根據預設,此預存程式會授與執行給系統管理員固定伺服器角色和 DatabaseMailUserRole 的成員系統管理員固定伺服器角色的成員可以執行此程式,以刪除所有用戶傳送的電子郵件。 DatabaseMailUserRole 的成員只能刪除該用戶傳送的電子郵件。

範例

A. 刪除所有電子郵件

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

DECLARE @GETDATE DATETIME;

SET @GETDATE = GETDATE();

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;
GO

B. 刪除最舊的電子郵件

下列範例會刪除 Database Mail 記錄中早於 2022 年 10 月 9 日的電子郵件。

EXEC msdb.dbo.sysmail_delete_mailitems_sp
    @sent_before = 'October 9, 2022';
GO

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

下列範例會刪除 Database Mail 記錄中的所有失敗電子郵件。

EXEC msdb.dbo.sysmail_delete_mailitems_sp
    @sent_status = 'failed';
GO