다음을 통해 공유


데이터베이스 메일

적용 대상: SQL Server Azure SQL Managed Instance

데이터베이스 메일은 SQL Server 데이터베이스 엔진 또는 Azure SQL Managed Instance에서 전자 메일 메시지를 보내기 위한 엔터프라이즈 솔루션입니다. 애플리케이션은 외부 SMTP 서버를 통해 데이터베이스 메일을 사용하여 사용자에게 전자 메일 메시지를 보낼 수 있습니다. 메시지는 쿼리 결과를 포함할 수 있으며 네트워크에 있는 모든 리소스의 파일을 포함할 수도 있습니다.

참고 항목

데이터베이스 메일은 SQL Server 데이터베이스 엔진 및 Azure SQL Managed Instance에서 사용할 수 있지만 Azure SQL 데이터베이스 singleton 및 Elastic Pool에서는 사용할 수 없습니다. Azure SQL Managed Instance에서 데이터베이스 메일을 사용하는 것에 대한 자세한 내용은 Azure SQL Managed Instance에서 SQL 에이전트 작업을 사용하여 관리 작업 자동화를 참조하세요.

데이터베이스 메일 사용의 이점

데이터베이스 메일은 안정성, 확장성, 보안 및 지원 가능성을 위해 설계되었습니다.

안정성

  • 데이터베이스 메일은 표준 SMTP(Simple Mail Transfer Protocol)를 사용하여 메일을 보냅니다. SQL Server를 실행하는 컴퓨터에 확장 MAPI 클라이언트를 설치하지 않고도 데이터베이스 메일을 사용할 수 있습니다.

  • 프로세스 격리. SQL Server에 대한 영향을 최소화하기 위해 전자 메일을 배달하는 구성 요소는 SQL Server 외부에서 별도의 프로세스로 실행됩니다. SQL Server는 외부 프로세스가 중지되거나 실패한 경우에도 계속해서 메일 메시지를 큐에 대기시킵니다. 외부 프로세스 또는 SMTP 서버가 온라인 상태가 되면 큐에 대기 중인 메시지가 전송됩니다.

  • 장애 조치(failover) 계정입니다. 데이터베이스 메일 프로필을 사용하면 둘 이상의 SMTP 서버를 지정할 수 있습니다. SMTP 서버를 사용할 수 없는 경우 메일을 다른 SMTP 서버로 배달할 수 있습니다.

  • 클러스터 지원입니다. 데이터베이스 메일은 클러스터를 인식하므로 클러스터에서 완벽하게 지원됩니다.

확장성

  • 백그라운드 배달: 데이터베이스 메일은 백그라운드 또는 비동기, 배달을 제공합니다. 메시지를 보내기 위해 sp_send_dbmail을 호출할 때 데이터베이스 메일은 Service Broker 큐에 요청을 추가합니다. 저장 프로시저가 즉시 반환됩니다. 외부 전자 메일 구성 요소는 요청을 수신하고 전자 메일을 배달합니다.

  • 다중 프로필: 데이터베이스 메일을 사용하면 SQL Server 인스턴스 내에서 다중 프로필을 만들 수 있습니다. 필요에 따라 메시지를 보낼 때 데이터베이스 메일을 사용하는 프로필을 선택할 수 있습니다.

  • 다중 계정: 각 프로필에는 여러 개의 장애 조치 계정이 있을 수 있습니다. 서로 다른 계정으로 다른 프로필을 구성하여 여러 전자 메일 서버에 전자 메일을 배포할 수 있습니다.

  • 64비트 호환성: 데이터베이스 메일은 SQL Server의 64비트 설치에서 완전히 지원됩니다.

보안

  • 기본값으로 꺼짐: SQL Server의 노출 영역을 줄이기 위해 데이터베이스 메일 저장 프로시저는 기본적으로 사용할 수 없도록 설정되어 있습니다.

  • 메일 보안: 데이터베이스 메일을 보내려면 msdb 데이터베이스에서 DatabaseMailUserRole 데이터베이스 역할의 구성원이어야 합니다.

  • 프로필 보안: 데이터베이스 메일은 메일 프로필에 대한 보안을 적용합니다. 데이터베이스 메일 프로필에 액세스할 수 있는 msdb 데이터베이스 사용자 또는 그룹을 선택합니다. msdb에서 특정 사용자 또는 모든 사용자에게 액세스 권한을 부여할 수 있습니다. 프라이빗 프로필은 지정된 사용자 목록에 대한 액세스를 제한합니다. 퍼블릭 프로필은 데이터베이스의 모든 사용자가 사용할 수 있습니다.

  • 첨부 파일 크기 관리자: 데이터베이스 메일은 첨부 파일 크기에 대해 구성 가능한 제한을 적용합니다. sysmail_configure_sp 저장 프로시저를 사용하여 이 제한을 변경할 수 있습니다.

  • 금지된 파일 확장자: 데이터베이스 메일은 금지된 파일 확장자 목록을 유지 관리합니다. 사용자는 목록에 표시된 확장명의 파일을 첨부할 수 없습니다. sysmail_configure_sp를 사용하여 이 목록을 변경할 수 있습니다.

  • 데이터베이스 메일은 SQL Server 엔진 서비스 계정에서 실행됩니다. 폴더의 파일을 전자 메일에 첨부하려면 SQL Server 엔진 계정에 해당 파일이 있는 폴더에 액세스할 수 있는 권한이 있어야 합니다.

지원 가능성

  • 통합 구성: 데이터베이스 메일은 SQL Server 데이터베이스 엔진 내에서 메일 계정에 대한 정보를 유지 관리합니다. 외부 클라이언트 애플리케이션에서 메일 프로필을 관리할 필요가 없습니다. 데이터베이스 메일 구성 마법사는 데이터베이스 메일을 구성하기 위한 편리한 인터페이스를 제공합니다. Transact-SQL을 사용하여 데이터베이스 메일 구성을 만들고 유지 관리할 수도 있습니다.

  • 로깅 데이터베이스 메일은 SQL Server, Microsoft Windows 애플리케이션 이벤트 로그 및 msdb 데이터베이스의 테이블에 메일 작업을 기록합니다.

  • 감사: 데이터베이스 메일은 msdb 데이터베이스에 보낸 메시지와 첨부 파일의 복사본을 보존합니다. 데이터베이스 메일 사용량을 쉽게 감사하고 보존된 메시지를 검토할 수 있습니다.

  • HTML 지원: 데이터베이스 메일을 사용하면 HTML 형식의 전자 메일을 보낼 수 있습니다.

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

데이터베이스 메일은 서비스 브로커 기술을 사용하는 큐에 대기 중인 아키텍처를 기반으로 설계되었습니다. 사용자가 sp_send_dbmail을 실행하면 저장 프로시저가 메일 큐에 항목을 삽입하고 전자 메일 메시지가 포함된 레코드를 만듭니다. 메일 큐에 새 항목을 삽입하면 외부 데이터베이스 메일 프로세스(DatabaseMail.exe)가 시작됩니다. 이 외부 프로세스는 전자 메일 정보를 읽고 전자 메일 메시지를 해당 전자 메일 서버로 보냅니다. 또한 보내기 작업의 결과로 상태 큐에 항목을 삽입합니다. 상태 큐에 새 항목을 삽입하면 전자 메일 메시지의 상태를 업데이트하는 내부 저장 프로시저가 시작됩니다. 전송되거나 보내지 않은 전자 메일 메시지를 저장하는 것 외에도 데이터베이스 메일 시스템 테이블에 전자 메일 첨부 파일도 기록합니다. 데이터베이스 메일 보기는 문제 해결을 위한 메시지의 상태를 제공하고 저장 프로시저를 통해 데이터베이스 메일 큐를 관리할 수 있습니다.

msdb는 SMTP 메일 서버로 메시지 전송

데이터베이스 메일 구성 요소 소개

데이터베이스 메일은 다음 주요 구성 요소로 이루어집니다.

  • 구성 및 보안 구성 요소

    데이터베이스 메일은 msdb 데이터베이스에 구성 및 보안 정보를 저장합니다. 구성 및 보안 개체는 데이터베이스 메일을 사용하는 프로필 및 계정을 만듭니다.

  • 메시징 구성 요소

    msdb 데이터베이스는 데이터베이스 메일이 전자 메일을 보내는 데 사용하는 메시징 개체를 보유하는 메일 호스트 데이터베이스 역할을 합니다. 이러한 개체에는 sp_send_dbmail 저장 프로시저 및 메시지에 대한 정보를 포함하는 데이터 구조가 포함됩니다.

  • 데이터베이스 메일 실행 파일

    데이터베이스 메일 실행 파일은 msdb 데이터베이스의 큐에서 읽고 전자 메일 서버로 메시지를 보내는 외부 프로그램입니다.

  • 로깅 및 감사 구성 요소

    데이터베이스 메일은 msdb 데이터베이스 및 Microsoft Windows 애플리케이션 이벤트 로그에 로깅 정보를 기록합니다.

데이터베이스 메일을 사용하도록 SQL 에이전트 구성

SQL Server 에이전트는 데이터베이스 메일을 사용하도록 구성할 수 있습니다. 이 과정은 작업 완료 시 경고 알림 및 자동 알림에 필요합니다.

Warning

작업 내의 개별 작업 단계에서는 데이터베이스 메일을 사용하도록 SQL Server 에이전트를 구성하지 않고 전자 메일을 보낼 수도 있습니다. 예를 들어 Transact-SQL 작업 단계에서는 데이터베이스 메일을 사용하여 쿼리 결과를 받는 사람 목록에 보낼 수 있습니다.

다음의 경우 미리 정의된 운영자에게 전자 메일 메시지를 보내도록 SQL Server 에이전트를 구성할 수 있습니다.

  • 경고가 트리거되었습니다. 발생하는 특정 이벤트에 대한 전자 메일 알림을 보내도록 경고를 구성할 수 있습니다. 예를 들면 즉각적인 조치가 필요할 수 있는 특정 데이터베이스 이벤트 또는 운영 체제 조건을 운영자에게 알리도록 경고를 구성할 수 있습니다. 경고를 구성하는 방법에 대한 자세한 내용은 경고를 참조하세요.

  • 데이터베이스 백업 또는 복제 이벤트 등 예약된 작업이 성공하거나 실패합니다. 예를 들면 월말에 처리하는 동안 오류가 발생하면 SQL Server 에이전트 메일을 사용하여 운영자에게 알릴 수 있습니다.

참고 항목

다음 단계