방법: SQL 메일에서 데이터베이스 메일로 저장 프로시저 변환(Transact-SQL)

데이터베이스 메일을 사용하면 SQL Server에서 전자 메일을 보낼 수 있습니다. 전자 메일을 보내기 위해 저장 프로시저 sp_send_dbmail을 사용합니다. 이 프로시저의 인수는 xp_sendmail의 인수와 비슷합니다. 그러므로 xp_sendmail을 사용하는 프로시저를 sp_send_dbmail을 사용하는 프로시저로 바로 변환할 수 있습니다.

sp_send_dbmail의 가장 중요한 추가 매개 변수는 메시지를 보내는 데 사용하는 선택적인 메일 프로필입니다. 데이터베이스 메일 구성 마법사 또는 데이터베이스 메일 저장 프로시저를 사용하여 데이터베이스 메일 프로필을 만듭니다. msdb 데이터베이스만이 메일 호스트 데이터베이스가 될 수 있습니다.

SQL 메일에서 데이터베이스 메일로 저장 프로시저를 변환하려면

  1. 데이터베이스 메일을 설정하지 않은 경우 사용할 수 있도록 설정합니다. 데이터베이스 메일을 사용하도록 설정하려면 데이터베이스 메일 구성 마법사를 사용합니다.

  2. 만들어진 데이터베이스 메일 프로필이 없으면 프로필을 새로 만듭니다. 데이터베이스 메일 프로필을 만드는 방법은 방법: 데이터베이스 메일 개인 프로필 만들기(Transact-SQL)를 참조하십시오.

  3. xp_sendmail에 대한 호출을 sp_send_dbmail에 대한 호출로 바꿉니다. 아래 표에 표시된 대로 xp_sendmail의 인수를 sp_send_dbmail의 인수로 매핑합니다.

xp_sendmail 인수

sp_send_dbmail 인수

@recipients

@recipients

@message

@body

@query

@query

@attachments

@file_attachments

@copy_recipients

@copy_recipients

@blind_copy_recipients

@blind_copy_recipients

@subject

@subject

@type

해당 사항 없음

@attach_results

@attach_query_result_as_file

@no_output

@exclude_query_output

@no_header

@query_result_header

@width

@query_result_width

@separator

@query_result_separator

@echo_error

해당 사항 없음

@set_user

해당 사항 없음

@dbuse

@execute_query_database

  1. 프로시저를 업데이트할 때 다음과 같은 차이를 고려해야 합니다.

    • 사용 가능한 MAPI 메시지 유형이 없습니다. 데이터베이스 메일이 확장 MAPI를 사용하지 않기 때문에 저장 프로시저가 메시지 유형을 설정할 수 없습니다.

    • @query 매개 변수를 제공할 경우 쿼리의 모든 오류는 sp_send_dbmail을 호출한 세션으로 반환됩니다.

    • @query 매개 변수를 제공할 경우 쿼리는 현재 사용자로 실행됩니다. 그러나 쿼리에 EXECUTE AS 문을 포함하여 모든 유효한 Transact-SQL 문을 포함할 수 있습니다.

    • 데이터베이스 메일은 SQL 메일에서 지원되지 않는 다음 옵션을 지원합니다.

    sp_send_dbmail 인수

    설명

    @profile_name

    메시지에 사용할 메일 프로필을 지정합니다. 데이터베이스 메일은 향상된 안정성과 확장성을 제공하기 위해 각 프로필에 대해 여러 프로필과 계정을 지원합니다. 메일 호스트 데이터베이스 또는 sp_send_dbmail을 호출하는 사용자에 대해 기본 프로필이 있을 경우 @profile을 생략할 수 있습니다.

    @body_format

    전자 메일 메시지 형식을 TEXT 또는 HTML 중에서 지정합니다.

    @importance

    전자 메일 메시지의 중요도를 지정합니다.

    @sensitivity

    전자 메일 메시지의 민감도를 지정합니다.

    @query_attachment_filename

    쿼리 결과가 파일로 첨부될 때 사용할 파일 이름을 지정합니다. @attach_results가 TRUE인 경우 xp_sendmail @query 매개 변수를 사용하면 @attachments 매개 변수는 메일 메시지에 첨부할 파일을 한 개만 지정할 수 있습니다. sp_send_dbmail에는 @file_attachments@query_attachment_filename 둘 다 포함됩니다.

다음은 SQL 메일을 사용하여 danw@Adventure-Works.com에게 메시지를 보내는 예제입니다.

EXEC master.dbo.xp_sendmail 
    @recipients=N'danw@Adventure-Works.com',
    @message=N'The master database is full.' ;

이어지는 예에서는 데이터베이스 메일과 현재 사용자에 대한 기본 프로필을 사용하여 동일한 메시지를 보냅니다.

EXEC msdb.dbo.sp_send_dbmail
    @recipients=N'danw@Adventure-Works.com',
    @body=N'The master database is full.' ;

프로시저는 msdb 데이터베이스에서 실행됩니다.