sysmail_delete_mailitems_sp (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 (失敗)
説明
データベース メールのメッセージとその添付ファイルは、msdb データベースに格納されます。 これらのメッセージは、msdb が予定外に大きくならないようにするため、また、組織のドキュメント保管計画に従って、定期的に削除することをお勧めします。 sysmail_delete_mailitems_sp ストアド プロシージャは、データベース メールのテーブルから電子メール メッセージを完全に削除するときに使用します。 日時を指定する引数を使用すると、古い電子メールだけを削除できます。 この場合、引数で指定した日時より前の電子メールが削除されます。 また、種類を指定する引数 sent_status を使用すると、特定の種類の電子メールだけを削除できます。 @sent_before または @sent_status のいずれかに引数を指定する必要があります。 すべてのメッセージを削除するには、@sent_before = getdate() を使用します。
電子メールを削除すると、そのメッセージに関係する添付ファイルも削除されます。 電子メールを削除しても、sysmail_event_log 内の対応するエントリは削除されません。 ログからアイテムを削除するには、sysmail_delete_log_sp を使用します。
権限
既定では、このストアド プロシージャの実行権限は sysadmin 固定サーバー ロールと DatabaseMailUserRole のメンバーに与えられています。 sysadmin 固定サーバー ロールのメンバーは、このプロシージャを実行すると、すべてのユーザーから送信された電子メールを削除できます。 DatabaseMailUserRole のメンバーは、そのユーザーが送信した電子メールだけを削除できます。
使用例
A. すべての電子メールを削除する
次の例では、データベース メール システムにあるすべての電子メールを削除します。
DECLARE @GETDATE datetimeSET @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)