본문 바로가기

MS SQL Express 트리거 DB 메일 보내기

액트 2019. 8. 16.
반응형

트리거 DB 메일 보내기


Microsoft SQL Express 버전은 무료 버전이다. 단, 사용 제약이 있다. 메모리 사용률, 백업 기타 등등..

트리거를 생성할 때도 위와 같이 마우스 우클릭 누르면 "새 트리거(N)" 이 비활성화 되어 있다.

 

DB 프로시저를 이용해서 DB 메일을 보낼 때도 구성 마법사를 통해

메일 계정 및 프로파일을 생성 해야 하지만 이 또한 비활성화 되어 있다.

 

비활성화 되어 있기 때문에 명령어로 모든 걸 처리해야 한다.

 

MSSQL Express 에서 트리거를 통한 DB 메일을 보내기 위해선 아래와 같이 해야 한다.

 

 

1. 계정 생성

*** DB 메일을 보내기 위한 계정 및 프로파일 생성 *** 
/* 아래에서 사용한 메일 주소와 메일서버 등의 정보는 제가 임의로 넣은 것입니다 .

상황에 맞게 변경하셔서 사용하시기 바랍니다. */

 

EXECUTE msdb.dbo.sysmail_add_account_sp 
@account_name = 'MailAccount' ,                            
@description = 'MSSQL DB메일' ,                           
@email_address = 'TEST@google.com' ,                    
@display_name = 'Nye' ,                                      
@username = 'TEST@google.com' ,                      
@password = 'password' ,                                  
@mailserver_name = 'mail.google.com'                    

 

2. 프로파일 생성

EXECUTE msdb.dbo.sysmail_add_profile_sp 
@profile_name = 'MailAccount' ,  
@description = '메일을 보내는 데 사용되는 프로파일'  

 

/* 계정과 프로파일 연결 */

EXECUTE msdb . dbo . sysmail_add_profileaccount_sp 
@profile_name = 'MailAccount' ,  
@account_name = 'MailAccount' ,  
@sequence_number = 1 
*/ 

 

 

3. 트리거 생성

CREATE TRIGGER [dbo].[Trigger_Name]
    ON [dbo].[DB_NAME]
    FOR INSERT             /* INSERT, UPDATE, DELETE 선택 */
    AS

declare @body_str varchar(2000)

    BEGIN
SELECT @body_str = body               /* 트리거를 생성할 DB가 INSERT 처리되면 body 컬럼 값을 @body_str에 대입 */
FROM inserted

EXECUTE msdb.dbo.sp_send_dbmail 
@profile_name = 'MailAccount' , 
@recipients = 'sdg87@naver.com' ,             /* 수신자 메일 주소 */
@subject = '메일 테스트' ,                         /* 메일제목 */
@body = @body_str                                /* 본문내용*/

    SET NOCOUNT ON
    END


 

4. 오류 대처 방법

만약 아래와 같은 에러 문구가 나온다면 
SQL Server blocked access to procedure 'dbo.sp_send_dbmail' of component 'Database Mail XPs' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Database Mail XPs' by using sp_configure. For more information about enabling 'Database Mail XPs', see "Surface Area Configuration" in SQL Server Books Online.

 

아래와 같이 설정을 적용하면 된다.

 

sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

sp_configure 'Database Mail XPs', 1;

GO

RECONFIGURE;

 


트리거가 아닌 프로시저로 작성 또는 쿼리로 테스트 하고 싶다면

EXECUTE msdb.dbo.sp_send_dbmail  
@profile_name = 'MailAccount' ,  
@recipients = 'sdg87@naver.com' ,             /* 수신자 메일 주소 */ 
@subject = '메일 테스트' ,                         /* 메일제목 */ 
@body = @body_str   

 

이것만 따와서 작성하시면 됩니다.

 

 

 

 

 

반응형

댓글