다음을 통해 공유


데이터베이스 메일을 통해 보낸 이메일 메시지의 상태 확인

적용 대상: SQL Server Azure SQL Managed Instance

이 항목에서는 Transact-SQL을 사용하여 SQL Server에서 데이터베이스 메일을 사용하여 보낸 전자 메일 메시지의 상태를 확인하는 방법을 설명합니다.

  • 시작하기 전 주의 사항:

  • 데이터베이스 메일을 사용하여 보낸 전자 메일의 상태를 보려면: Transact-SQL

시작하기 전에

데이터베이스 메일 보내는 전자 메일 메시지의 복사본을 유지하고 msdb 데이터베이스의 sysmail_allitems, sysmail_sentitems, sysmail_unsentitems sysmail_faileditems 보기에 표시합니다. 데이터베이스 메일 외부 프로그램은 작업을 기록하고 msdb 데이터베이스의 Windows 애플리케이션 이벤트 로그 및 sysmail_event_log 보기를 통해 로그를 표시합니다. 전자 메일 메시지의 상태를 확인하려면 이 보기에 대해 쿼리를 실행합니다. 전자 메일 메시지에는 전송, 보내지 않음, 재시도실패의 네 가지 상태 중 하나가 있습니다.

Transact-SQL 사용

데이터베이스 메일을 사용하여 보낸 전자 메일의 상태를 보려면

  1. sysmail_allitems 테이블에서 선택하여 mailitem_id 또는 sent_status별로 원하는 메시지를 지정합니다.

  2. 전자 메일 메시지에 대한 외부 프로그램에서 반환된 상태를 확인하려면 다음 섹션과 같이 mailitem_id 열에서 sysmail_allitems에서 sysmail_event_log로 조인합니다.

    기본적으로 외부 프로그램은 성공적으로 전송된 메시지에 대한 정보를 기록하지 않습니다. 모든 메시지를 기록하려면 데이터베이스 메일 구성 마법사시스템 매개 변수 구성페이지를 사용하여 로깅 수준을 자세히로 설정하세요.

예(Transact-SQL)

다음 예제에서는 외부 프로그램에서 성공적으로 보낼 수 없는 danw로 보낸 전자 메일 메시지에 대한 정보를 나열합니다. 이 문에는 제목, 외부 프로그램이 메시지를 보내지 못한 날짜 및 시간, 데이터베이스 메일 로그의 오류 메시지가 나열됩니다.

USE msdb ;  
GO  
  
-- Show the subject, the time that the mail item row was last  
-- modified, and the log information.  
-- Join sysmail_faileditems to sysmail_event_log   
-- on the mailitem_id column.  
-- In the WHERE clause list items where danw was in the recipients,  
-- copy_recipients, or blind_copy_recipients.  
-- These are the items that would have been sent  
-- to danw.  
  
SELECT items.subject,  
    items.last_mod_date  
    ,l.description FROM dbo.sysmail_faileditems as items  
INNER JOIN dbo.sysmail_event_log AS l  
    ON items.mailitem_id = l.mailitem_id  
WHERE items.recipients LIKE '%danw%'    
    OR items.copy_recipients LIKE '%danw%'   
    OR items.blind_copy_recipients LIKE '%danw%'  
GO  

참고 항목

데이터베이스 메일 로그 및 감사