방법: SQL 메일에서 데이터베이스 메일로 저장 프로시저 변환(Transact-SQL)
데이터베이스 메일을 사용하면 SQL Server에서 전자 메일을 보낼 수 있습니다. 전자 메일을 보내기 위해 저장 프로시저 sp_send_dbmail을 사용합니다. 이 프로시저의 인수는 xp_sendmail의 인수와 비슷합니다. 그러므로 xp_sendmail을 사용하는 프로시저를 sp_send_dbmail을 사용하는 프로시저로 바로 변환할 수 있습니다.
sp_send_dbmail의 가장 중요한 추가 매개 변수는 메시지를 보내는 데 사용하는 선택적인 메일 프로필입니다. 데이터베이스 메일 구성 마법사 또는 데이터베이스 메일 저장 프로시저를 사용하여 데이터베이스 메일 프로필을 만듭니다. msdb 데이터베이스만이 메일 호스트 데이터베이스가 될 수 있습니다.
SQL 메일에서 데이터베이스 메일로 저장 프로시저를 변환하려면
데이터베이스 메일을 설정하지 않은 경우 사용할 수 있도록 설정합니다. 데이터베이스 메일을 사용하도록 설정하려면 데이터베이스 메일 구성 마법사를 사용합니다.
만들어진 데이터베이스 메일 프로필이 없으면 프로필을 새로 만듭니다. 데이터베이스 메일 프로필을 만드는 방법은 방법: 데이터베이스 메일 개인 프로필 만들기(Transact-SQL)를 참조하십시오.
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 |
프로시저를 업데이트할 때 다음과 같은 차이를 고려해야 합니다.
사용 가능한 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 데이터베이스에서 실행됩니다.