次の方法で共有


sysmail_delete_log_sp (Transact-SQL)

適用対象: SQL Server

データベース メール ログからイベントを削除します。 ログ内のすべてのイベント、または日付または種類の条件を満たすイベントを削除します。

Transact-SQL 構文表記規則

構文

sysmail_delete_log_sp [ [ @logged_before = ] 'logged_before' ]
    [ , [ @event_type = ] 'event_type' ]
[ ; ]

引数

[ @logged_before = ] 'logged_before'

@logged_before引数で指定された日付と時刻までのエントリを削除します。 @logged_beforeは既定NULLです。 NULL は、すべての日付を示します。

[ @event_type = ] 'event_type'

@event_typeとして指定された種類のログ エントリを削除します。 @event_type は既定 varchar(15) です。 有効なエントリは次のとおりです。

  • success
  • warning
  • error
  • informational

NULL はすべてのイベントの種類を表します。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

データベース メール ログからエントリを完全に削除するには、sysmail_delete_log_sp ストアド プロシージャを使用します。 日時を指定する引数を使用すると、古い記録だけを削除できます。 この場合、引数で指定した日時より前のイベントが削除されます。 省略可能な引数を使用すると、 @event_type 引数として指定された特定の型のイベントのみを削除できます。

データベース メール ログ内のエントリを削除しても、データベース メール テーブルから電子メール エントリは削除されません。 sysmail_delete_mailitems_spを使用して、データベース メール テーブルから電子メールを削除します。

アクセス許可

このストアド プロシージャは、 db_owner ロールによって所有されています。 EXECUTEアクセス許可は任意のユーザーに付与できますが、SQL Server のアップグレード中にこれらのアクセス許可がオーバーライドされる可能性があります。

A. すべてのイベントを削除する

次の例では、データベース メール ログ内のすべてのイベントを削除します。

EXEC msdb.dbo.sysmail_delete_log_sp;
GO

B. 最も古いイベントを削除する

次の例では、2022 年 10 月 9 日より前のデータベース メール ログ内のイベントを削除します。

EXEC msdb.dbo.sysmail_delete_log_sp
    @logged_before = 'October 9, 2022';
GO

C: 特定の種類のすべてのイベントを削除する

次の例では、データベース メール ログにある成功メッセージを削除します。

EXEC msdb.dbo.sysmail_delete_log_sp
    @event_type = 'success' ;
GO