문제

I 인트라넷 웹 응용 프로그램을 통해 증명 양식을 완료하지 않은 경우 회사의 직원에게 전자 메일 알림을 보내는 기능을 사용하고 있습니다.

야간 데이터베이스 작업에서 호출되는 저장 프로 시저를 작성하는 것을 생각하고있었습니다 (SQL Server 2008 R2).proc는 커서를 통해 직원 전자 메일 주소 값을 선택하고 루프를 통해 루프를 통해 루프를 통해 msdb.dbo.sp_send_dbmail을 사용하여 전자 메일이 전송됩니다.

내가 가진 관심사는 이것이 큰 회사와 수만의 전자 메일이 밤에 나올 수 있다는 것입니다.이러한 전자 메일을 보낼 때 성능 문제를 완화하는 방법이 있습니까?또는 수만 수준의 수준에서는 걱정이되지 않아야합니까?

도움이 되었습니까?

해결책

i reckon 내부에서 temp 테이블 / 테이블 변수를 만들고 전자 메일을 보내려는 전자 메일로 그것을 채울 수 있습니다.

테이블에 모든 전자 메일이 있으면 ;로 전자 메일 주소를 연결하고 변수에 저장하고 해당 변수를 Msdb.dbo.sp_send_dbmail proc의 @recipients 매개 변수로 전달할 수 있습니다.

이와 같은 것 ...

프로 시저 안에있는 이메일이라는 표 변수를 채웠다

DECLARE @Emails TABLE(Email NVARCHAR(1000))
INSERT INTO @Emails VALUES
('aaa@aaa.com'),('bbb@aaa.com'),('ccc@aaa.com')  --<-- Three emails you want to send email
.

이메일 연결

DECLARE @Email_List NVARCHAR(MAX);   --<-- Variable to store emails List

SELECT @Email_List = STUFF((SELECT ';' + Email [text()]
                            FROM @Emails
                            FOR XML PATH(''),TYPE)
                            .value('.','NVARCHAR(MAX)'),1,1, '')                   
FROM @Emails e 

-- Test SELECT @Email_List
-- RESULT:  aaa@aaa.com;bbb@aaa.com;ccc@aaa.com
.

이제이 변수를 @recipients 매개 변수로 전달합니다

EXECUTE msdb.dbo.sp_send_dbmail  @profile_name = 'ProfileName'  
                               , @recipients   = @Email_List
                               , @subject      = 'Some_Subject'
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top