sysmail_delete_mailitems_sp (Transact-SQL)
適用於:SQL Server
從 Database Mail 內部資料表永久刪除電子郵件訊息。
語法
sysmail_delete_mailitems_sp [ [ @sent_before = ] 'sent_before' ]
[ , [ @sent_status = ] 'sent_status' ]
[ ; ]
引數
[ @sent_before = ] 'sent_before'
刪除以 @sent_before 自變數提供之日期和時間的電子郵件。 @sent_before是預設值為 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