데이터베이스 메일 문제 해결: 메일이 지연되고 sysmail_log 또는 Windows 응용 프로그램 이벤트 로그에 항목이 없음

이 항목에서는 전자 메일 메시지가 정상적으로 큐에 들어가지만 외부 프로그램의 작업이 sysmail_event_log(Transact-SQL) 뷰 또는 Windows 응용 프로그램 이벤트 로그에 나타나지 않는 문제를 해결하는 방법에 대해 설명합니다.

데이터베이스 메일은 Service Broker 에 의존하여 전자 메일 메시지를 큐에 보냅니다. 데이터베이스 메일이 중지되었거나 msdb 데이터베이스에서 Service Broker 메시지 배달이 활성화되지 않은 경우 데이터베이스 메일은 데이터베이스 큐에 메시지를 보내기는 하지만 배달할 수는 없습니다. 이 경우 Service Broker 메시지는 Service Broker 메일 큐에 남게 됩니다. Service Broker 가 외부 프로그램을 활성화하지 않으므로 sysmail_event_log에 로그 항목이 없으며 sysmail_allitems 및 관련 뷰의 항목 상태도 업데이트되지 않습니다.

다음 문을 실행하여 데이터베이스 메일이 설정되었는지 여부를 확인합니다.

SELECT is_broker_enabled FROM sys.databases WHERE name = 'msdb' ;

0 값은 msdb 데이터베이스에서 Service Broker 메시지 배달이 활성화되지 않았음을 나타냅니다. 문제를 해결하려면 데이터베이스에서 Service Broker 를 활성화합니다. Service Broker 메시지 배달 활성화 방법은 방법: 데이터베이스에서 Service Broker 메시지 배달 활성화(Transact-SQL)를 참조하십시오.

데이터베이스 메일은 많은 내부 저장 프로시저를 사용합니다. SQL Server 를 새로 설치하면 노출 영역을 줄이기 위해 이러한 저장 프로시저는 해제되어 있습니다. 저장 프로시저를 설정하려면 SQL Server 노출 영역 구성 유틸리티나 sp_configure(Transact-SQL) 시스템 저장 프로시저를 사용합니다.

데이터베이스 메일은 msdb 데이터베이스에서 중지할 수 있습니다. 데이터베이스 메일의 상태를 확인하려면 다음 문을 실행합니다.

EXECUTE dbo.sysmail_help_status_sp ;

메일 호스트 데이터베이스에서 데이터베이스 메일을 시작하려면 msdb 데이터베이스에서 다음 명령을 실행합니다.

EXECUTE dbo.sysmail_start_sp ;

Service Broker 는 자신이 활성화될 때 메시지의 대화 수명을 검사하며 지정된 대화 수명보다 오랫동안 Service Broker 전송 큐에 남아있던 메시지는 즉시 실패합니다. 데이터베이스 메일은 실패한 메시지의 상태를 sysmail_allitems(Transact-SQL) 테이블 및 관련 뷰에 업데이트합니다. 사용자는 전자 메일 메시지를 다시 보낼지 여부를 결정해야 합니다. 데이터베이스 메일이 사용하는 대화 수명의 구성 방법은 sysmail_configure_sp(Transact-SQL)를 참조하십시오.

참고 항목

작업

데이터베이스 메일 문제 해결
데이터베이스 메일 문제 해결: 일반적인 단계

개념

데이터베이스 메일 아키텍처
데이터베이스 메일

도움말 및 정보

SQL Server 2005 지원 받기