sysmail_delete_mailitems_sp (Transact-SQL)
適用対象:SQL Server
データベース メール内部テーブルから電子メール メッセージを完全に削除します。
構文
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 DATETIME;
SET @GETDATE = GETDATE();
EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;
GO
B. 最も古い電子メールを削除する
次の例では、2022 年 10 月 9 日より前のデータベース メール ログの電子メールを削除します。
EXEC msdb.dbo.sysmail_delete_mailitems_sp
@sent_before = 'October 9, 2022';
GO
C: 特定の種類のすべての電子メールを削除する
次の例では、データベース メール ログで失敗したすべての電子メールを削除します。
EXEC msdb.dbo.sysmail_delete_mailitems_sp
@sent_status = 'failed';
GO
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示