2013-08-19 7 views
0

Sql Server Agent에서 다음 작업을 실행하려고하는데 이메일을받지 못했습니다.참여와 함께 sp_send_dbmail 사용

내가 조인하지 않고 간단한 쿼리로 쿼리를 대체하기 때문에 내가 inner join 테이블을 대표하는 방식에 문제가 있다고 생각합니다.

EXEC msdb.dbo.sp_send_dbmail 
    @profile_name = 'TEST_DEV', 
    @recipients = '[email protected]', 
    @query = ' select 
      Percentage = CONVERT(DECIMAL(10,1),100 - (CAST(COUNT(DISTINCT case when PD.Exception != ' ' then PD.Id END) as float)/CAST(COUNT(PD.Id) as float)*100)) 
     from 
       DataBaseName.dbo.Product P INNER JOIN DataBaseName.dbo.LogProduct PD 
       ON P.LogId = PD.LogId 

       WHERE 
       ResponseTime < GETDATE() and RequestTime > DATEADD(MINUTE, -150, GETDATE()) 
       ' , 
    @subject = 'Test', 
    @attach_query_result_as_file = 1 ; 

답변

0

위의 답변을 통해 도움이되었습니다. 내 문제를 해결하기 위해 수행 한 작업은 쿼리 대신 저장 프로 시저를 사용한다는 것입니다. 지금은 잘 작동합니다.

@query = 'exec DatabaseName.dbo.storedprocedure' 
1

오류없이 내 @query 매개 변수에 조인을 사용합니다. 전자 메일을 보내지 않는다는 사실은 일반적으로 쿼리가 런타임에 성공적으로 구문 분석되지 않았다는 표시입니다.

쿼리가 조인과 함께 SSMS에서 직접 실행됩니까? @ResponseTime TYPE 변수를 만드는 것을 고려할 수도 있습니다. ??? send_dbmail 이전에 변수 값을 설정 한 다음 @ResponseTime 구문을 대체 할 때 그 값을 단순히 전달하십시오.

1

서식 문제가 발생했습니다. 따옴표를 이스케이프하려면 ''을 사용해야합니다. 이 질문이 귀하의 첫 번째 문제 일 수 있습니다.

Adventure Works가 설치되어있는 경우 내 데이터베이스 메일 blog 항목에서 아래 쿼리를 실행하십시오. 그냥 프로필 이름과받는 사람의 메일 주소를 바꿉니다. 그러면 sp_send_dbmail() 함수가 테스트됩니다. 이 작업을 수행하는 경우

-- Send with query results as an attachment 
EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'The Public Profile', 
@recipients = '[email protected]', 
@query = 'SELECT COUNT(*) FROM AdventureWorks2008R2.Production.WorkOrder 
WHERE DueDate > ''2006-04-30'' 
AND DATEDIFF(dd, ''2006-04-30'', DueDate) < 2' , 
@subject = 'Work Order Count', 
@attach_query_result_as_file = 1 ; 
GO 

는 다음 결과를 얻고 있는지 확인 SSMS에서 쿼리를 테스트합니다.