Share via


데이터베이스 메일: 메일 큐에 대기 중, 배달되지 않음

적용 대상:SQL ServerAzure SQL Managed Instance

이 항목에서는 전자 메일 메시지가 성공적으로 큐에 대기되지만 메시지가 배달되지 않는 문제를 해결하는 방법에 대해 설명합니다.

문제 진단

데이터베이스 메일 외부 프로그램은 이메일 작업을 msdb 데이터베이스에 기록합니다.

먼저 데이터베이스 메일이 사용하도록 설정되어 있는지 확인하려면 다음 예제와 같이 sp_configure 시스템 저장 프로시저의 데이터베이스 메일 XPs 옵션을 사용합니다.

EXEC sp_configure 'show advanced', 1;  
RECONFIGURE; 
EXEC sp_configure; 
GO

그런 다음 msdb 데이터베이스에서 다음 문을 실행하여 메일 큐의 상태를 확인합니다.

EXEC msdb.dbo.sysmail_help_queue_sp @queue_type = 'Mail';

열에 대한 자세한 설명은 sysmail_help_queue_sp(Transact-SQL)를 참조하세요.

sysmail_event_log 보기에서 활동을 확인합니다. 이 보기에는 데이터베이스 메일 외부 프로그램이 시작되었음을 나타내는 항목이 포함되어야 합니다. sysmail_event_log 보기에 항목이 없으면 큐에 대기 중인 메시지, sysmail_event_log 항목 없음 증상을 참조하세요. sysmail_event_log 보기에 오류가 있는 경우 특정 오류를 해결합니다.

sysmail_event_log 뷰에 항목이 있는 경우 sysmail_allitems 뷰에서 메시지의 상태를 확인합니다.

메시지 상태 unsent

전송되지 않은 상태는 데이터베이스 메일 외부 프로그램이 아직 전자 메일 메시지를 처리하지 않음을 나타냅니다. 데이터베이스 메일 외부 프로그램이 메시지 처리에 뒤쳐졌을 수 있습니다. 외부 프로그램이 메시지를 처리하는 속도는 네트워크 조건, 재시도 제한 시간, 메시지 볼륨 및 SMTP 서버의 용량에 따라 달라집니다. 문제가 지속되면 둘 이상의 프로필을 사용하여 둘 이상의 SMTP 서버 간에 메시지를 배포하는 것이 좋습니다.

배달된 메시지에 대한 최신 수정 날짜를 확인합니다. 마지막으로 성공한 배달이 몇 시간 전에 발생한 경우 sysmail_event_log 보기를 확인하여 Service Broker에서 외부 프로그램이 성공적으로 시작되었는지 확인합니다. 마지막 시도가 외부 프로그램을 시작하지 않은 경우 데이터베이스 메일 외부 프로그램이 올바른 디렉터리에 있고 SQL Server의 서비스 계정에 실행 파일을 실행할 수 있는 권한이 있는지 확인합니다.

참고 항목

보내지 않은 오래된 메시지를 삭제하려면 전달할 수 없는 메시지가 큐에서 가장 오래된 메시지가 될 때까지 기다린 다음 sysmail_delete_mailitems_sp를 사용하여 해당 메시지를 삭제합니다.

메시지 상태 재시도

재시도 상태는 데이터베이스 메일이 메시지를 SMTP 서버로 배달하려고 했지만 배달할 수 없음을 나타냅니다. 일반적으로 네트워크 중단, SMTP 서버 오류 또는 잘못 구성된 데이터베이스 메일 계정으로 인해 발생합니다. 메시지는 결국 성공하거나 실패하고 이벤트 로그에 메시지를 게시해야 합니다.

보낸 메시지 상태

보낸 상태는 데이터베이스 메일 외부 프로그램이 전자 메일 메시지를 SMTP 서버에 성공적으로 전달했음을 나타냅니다. 메시지가 대상에 도착하지 않은 경우 SMTP 서버는 데이터베이스 메일의 메시지를 수락했지만 최종 받는 사람에게 메시지를 전달하지 않았습니다. SMTP 서버의 로그를 확인하거나 SMTP 서버의 관리자에게 문의하세요. Outlook Express와 같은 다른 클라이언트를 사용하여 SMTP 메일 서버를 테스트할 수도 있습니다.

메시지 상태가 실패했습니다.

실패 상태는 데이터베이스 메일 외부 프로그램이 메시지를 SMTP 서버로 배달할 수 없음을 나타냅니다. 이 경우 sysmail_event_log 보기에는 외부 프로그램의 자세한 정보가 포함됩니다. 자세한 오류 메시지를 검색하기 위해 sysmail_faileditems인하고 sysmail_event_log 샘플 쿼리는 데이터베이스 메일로 보낸 전자 메일 메시지의 상태 확인을 참조하세요. 오류의 가장 일반적인 원인은 잘못된 대상 주소 또는 외부 프로그램이 하나 이상의 장애 조치(failover) 계정에 도달하지 못하게 하는 네트워크 문제입니다. SMTP 서버의 문제로 인해 해당 서버에서 메일을 거부할 수도 있습니다. 데이터베이스 메일 구성 마법사를 사용하여 로깅 수준을 자세한 정보 표시로 변경하고 테스트 메일을 보내 실패 지점을 조사합니다.

참고 항목