2011-02-02 4 views
1

Sql Server 2005에서 sp_send_dbmail을 사용하여 전자 메일을 보내려고합니다. 본문 텍스트와 쿼리를 첨부 파일로 보내고 있습니다.sp_send_dbmail 쿼리의 결과 집합 테스트?

가끔씩 쿼리가 빈 데이터 집합을 반환합니다.

전자 메일을 보내기 전에 데이터 집합의 결과를 테스트 할 수있는 방법이 있습니까? 결과가없는 경우이를 첨부 파일로 보내지 마십시오.

전자 메일을 보내고 그 결과를 테스트하기 전에 쿼리를 실행하려고 생각했습니다.

if @@rowcount >0 
    EXEC msdb.dbo.sp_send_dbmail @[email protected]_list, 
     @subject = @subject, 
     @body = @body_text, @body_format = 'HTML', 
     @query = @query, 
     @attach_query_result_as_file = 1, 
     @query_result_width = 4000, 
     @query_attachment_filename = 'Details.txt' 
else 
EXEC msdb.dbo.sp_send_dbmail @[email protected]_list, 
     @subject = @subject, 
     @body = @body_text, @body_format = 'HTML' 

을하지만 나는이 문제를 해결하기위한 효율적인 방법이라고 생각하지 않습니다 그런 다음, 다음과 같이 나는 if-else이있을 것이다.

제안 사항? 티아 !!

답변

1

좋아요, DBA가이 절차에 대한 액세스를 차단 한 것으로 보입니다. 그러나 sp_send_dbmail은 호출 스크립트에서 로컬 변수를 사용하지 않지만 전역 임시 테이블을 사용할 수 있음을 알고 있습니다.

이것은 좋은 해결책은 아니지만 ## tempTable에 쿼리 결과 집합을 삽입 한 다음 0 행 이상인 경우 sp_send_dbmail에서 select * from ##tempTable으로 전달되는 쿼리를 변경해보십시오.

적어도 원래 쿼리 2x (작동하는 경우)를 실행하는 것보다 좋을 것입니다. 완료되면 드롭하는 것을 잊지 마십시오!