sysmail_delete_mailitems_sp(Transact-SQL)

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

항목 링크 아이콘 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의 멤버는 자신이 보낸 전자 메일만 삭제할 수 있습니다.

1.모든 전자 메일 삭제

다음 예에서는 데이터베이스 메일 시스템의 모든 전자 메일을 삭제합니다.

DECLARE @GETDATE datetimeSET @GETDATE = GETDATE()EXECUTE msdb.dbo.sysmail_delete_mailitems_sp @sent_before = @GETDATE;GO

2.오래된 전자 메일 삭제

다음 예에서는 데이터베이스 메일 로그에서 October 9, 2005 이전의 전자 메일을 삭제합니다.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp 
    @sent_before = 'October 9, 2005' ;
GO

3.특정 유형의 모든 전자 메일 삭제

다음 예에서는 데이터베이스 메일 시스템에서 모든 실패한 전자 메일을 삭제합니다.

EXECUTE msdb.dbo.sysmail_delete_mailitems_sp 
    @sent_status = 'failed' ;
GO

참고 항목

참조

sysmail_allitems(Transact-SQL)

sysmail_event_log(Transact-SQL)

sysmail_mailattachments(Transact-SQL)

개념

데이터베이스 메일 메시지 및 이벤트 로그 보관을 처리하는 SQL Server 에이전트 작업 만들기