다음을 통해 공유


sysmail_delete_mailitems_sp(Transact-SQL)

적용 대상:SQL Server

데이터베이스 메일 내부 테이블에서 전자 메일 메시지를 영구적으로 삭제합니다.

Transact-SQL 구문 표기 규칙

구문

sysmail_delete_mailitems_sp [ [ @sent_before = ] 'sent_before' ]
    [ , [ @sent_status = ] 'sent_status' ]
[ ; ]

인수

[ @sent_before = ] 'sent_before'

@sent_before 인수로 제공된 날짜 및 시간까지 전자 메일을 삭제합니다. @sent_before 기본적으로 NULL이 있는 datetime입니다. NULL은 모든 날짜를 나타냅니다.

[ @sent_status = ] 'sent_상태'

@sent_상태 지정된 형식의 전자 메일을 삭제합니다. @sent_상태 기본값이 없는 varchar(8)입니다. 유효한 항목은 다음과 같습니다.

  • sent
  • unsent
  • retrying
  • failed.

NULL은 모든 상태 나타냅니다.

반환 코드 값

0 (성공) 또는 1 (실패).

설명

데이터베이스 메일 메시지 및 해당 첨부 파일은 데이터베이스에 msdb 저장됩니다. 예상보다 커지는 것을 방지 msdb 하고 조직 문서 보존 프로그램을 준수하려면 메시지를 주기적으로 삭제해야 합니다. 저장 프로시저를 sysmail_delete_mailitems_sp 사용하여 데이터베이스 메일 테이블에서 전자 메일 메시지를 영구적으로 삭제합니다. 선택적 인수를 사용하면 날짜와 시간을 제공하여 이전 전자 메일만 삭제할 수 있습니다. 이 인수에 지정된 날짜 및 시간보다 오래된 전자 메일은 삭제됩니다. 또 다른 선택적 인수를 사용하면 @sent_상태 인수로 지정된 특정 형식의 전자 메일만 삭제할 수 있습니다. @sent_before 또는 @sent_상태 인수를 제공해야 합니다. 모든 메시지를 @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