데이터베이스 메일을 통해 보낸 전자 메일 메시지의 상태 확인Check the Status of E-Mail Messages Sent With Database Mail

이 항목에서는 SQL Server 2017SQL Server 2017 에서 Transact-SQLTransact-SQL을 사용하여 데이터베이스 메일로 보낸 전자 메일 메시지의 상태를 확인하는 방법에 대해 설명합니다.This topic describes how to check the status of the e-mail message sent using Database Mail in SQL Server 2017SQL Server 2017 by using Transact-SQLTransact-SQL.

  • 시작하기 전에:Before you begin:

  • 데이터베이스 메일을 사용하여 보낸 전자 메일의 상태를 보려면: Transact-SQLTo view the status of the e-mail sent using Database Mail, using: Transact-SQL

시작하기 전에 Before You Begin

데이터베이스 메일은 보내는 전자 메일 메시지의 복사본을 유지하고 msdb데이터베이스의 sysmail_allitems, sysmail_sentitems, sysmail_unsentitems , sysmail_faileditems 뷰에 표시합니다.Database Mail keeps copies of outgoing e-mail messages and displays them in the sysmail_allitems, sysmail_sentitems, sysmail_unsentitems, sysmail_faileditems views of the msdb database. 데이터베이스 메일 외부 프로그램은 작업을 기록하고 Windows 응용 프로그램 이벤트 로그와 msdb 데이터베이스의 sysmail_event_log 뷰를 통해 로그를 표시합니다.The Database Mail external program logs activity and displays the log through the Windows Application Event Log and the sysmail_event_log view in the msdb database. 전자 메일 메시지의 상태를 확인하려면 이 뷰에 대한 쿼리를 실행하세요.To check the status of an e-mail message, run a query against this view. 전자 메일 메시지에는 sent, unsent, retryingfailed의 4가지 가능한 상태 중 하나가 있습니다.E-mail messages have one of four possible statuses: sent, unsent, retrying, and failed.

Transact-SQL 사용 Using Transact-SQL

데이터베이스 메일을 사용하여 보낸 전자 메일의 상태를 보려면To view the status of the e-mail sent using Database Mail

  1. sysmail_allitems 테이블에서 mailitem_id 또는 sent_status로 메시지를 선택합니다.Select from the sysmail_allitems table, specifying the messages of interest by mailitem_id or sent_status.

  2. 전자 메일 메시지에 대해 외부 프로그램에서 반환된 상태를 확인하려면 다음 섹션에 나열된 방법으로 sysmail_allitemsmailitem_id 열의 sysmail_event_log 뷰에 조인합니다.To check the status returned from the external program for the e-mail messages, join sysmail_allitems to sysmail_event_log view on the mailitem_id column, as shown in the following section.

    기본적으로 외부 프로그램은 성공적으로 전송된 메시지에 대한 정보를 기록하지 않습니다.By default, the external program does not log information about messages that were successfully sent. 모든 메시지를 기록하려면 데이터베이스 메일 구성 마법사시스템 매개 변수 구성페이지를 사용하여 로깅 수준을 자세히로 설정하세요.To log all messages, set the logging level to verbose using the Configure System Parameters page of the Database Mail Configuration Wizard.

예(Transact-SQL) Example (Transact-SQL)

다음 예에서는 danw 로 전송되었지만 외부 프로그램에서 성공적으로 보내지 못한 모든 전자 메일 메시지에 대한 정보를 나열합니다.The following example lists information about any e-mail messages sent to danw that the external program could not send successfully. 이 문은 제목, 외부 프로그램에서 메시지를 보내지 못한 날짜와 시간, 데이터베이스 메일 로그의 오류 메시지를 나열합니다.The statement lists the subject, the date and time that the external program failed to send the message, and the error message from the Database Mail log.

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  

참고 항목See Also

데이터베이스 메일 로그 및 감사Database Mail Log and Audits