실제로 이것은 기본적으로 가능하며 정말 좋습니다! 당신이 찾고있는 것은 데이터 기반 구독입니다. 보고서의 관리 페이지 아래에있는 구독 탭으로 이동하여 보고서를 만듭니다. 구독 만들기 및 데이터 기반 구독 만들기의 두 가지 옵션이 있습니다. Create Data-Driven Subscription을 클릭하십시오.
나는 여기에서 길이에 대해 사과하지만 이것들에 대해서 너무 많이 말하고있다!
내가 원하는대로 설정할 수있는 심층적 인 과정이기 때문에 여기에 모든 단계를 자세히 설명 할 수는 없습니다. 선택의 폭이 있습니다! Here은 데이터 기반 구독에 대한 MSDN 기사입니다.하지만 최소한의 도움이 될 것입니다. Here은 TechNet 자습서를 작성하는 방법에 대한 것이지만, 사용자가 갈길만큼 깊이 파고 들지 않는다는 것을 알게 될 것입니다. 방금 시행 착오를 통해 모든 것을 배웠습니다.
이런 것들에 대해 말할 것도 없지만 기본적으로 데이터의 일부를 평가하는 SQL 쿼리를 작성하면 결과적으로 "메모"(html로 작성된 전자 메일), "Include Report"(true/false) 및 "Render Format"등이 있습니다.
쿼리가 반환하는 각 줄마다 하나의 전자 메일이 전송된다는 점에 유의해야합니다. 따라서 거래 보고서 전자 메일 세 개를 보내려면 쿼리가 모든 적절한 데이터가 포함 된 세 개의 행을 반환하는지 확인해야합니다.
귀하의 이익을 위해 다음은 보고서를 작성하는 내 검색어 중 수정 된 사본입니다. 코멘트 필드는 html로 작성해야하므로 상당히 길다는 것을 알 수 있습니다. 그러나 SQL은 긴 문자열을 제대로 처리 할 수있는 한 매우 긴 문자열을 처리 할 수 있습니다.
따라서 거래가 없을 때 Include_Report를 false로 설정하고 보고서가 첨부되지 않은 이유에 대한 설명을 적절한 메시지로 변경하고자 할 수 있습니다.
이 쿼리의 목적은 서버 문제를 찾고 문제가 발견되면 최종 사용자에게 나중에 제공 될 것이라고 알리는 전자 메일 (보고서가 첨부되지 않음)을 발송하는 것입니다. (필자는 서버 성능을 담당하지 않으며 시간에 맞추지 못하는 사람들이 많습니다.)
모든 입력 변수에 대해 SSRS 가입 필드가 있음을 알게 될 것입니다. 이 방법을 통해 나는 내가 상상할 수있는 스크립트를 기반으로 보고서가 전자 메일로 보내지는 방법을 제어 할 수 있습니다. 또한 설정이 좀 더 쉬워집니다. 또한 구독을 테스트 할 수있는 빠른 방법으로 구축하여 최종 사용자에게 전달하지 않고도 재생할 수 있으며 최종 사용자에게 이동하도록 변경하는 데 몇 초가 걸립니다.
/*********************************************************/
/* Change @Testing to 'TEST' to have all emails */
/* sent to Christopher Brown */
/*********************************************************/
/* Change @Testing to 'PROD' to have all emails */
/* sent to normal recipients. */
/*********************************************************/
Declare @Testing varchar(4) = 'TEST';
With Problems as (
/*Script that looks for hardware failures or anything that would
cripple the accuracy of the report.*/
)
Select Case
When @Testing = 'TEST'
Then '[email protected]'
When @Testing = 'PROD'
Then '[email protected]'
Else '[email protected]'
End as 'To'
, Case
When @Testing = 'TEST'
Then '[email protected]'
When @Testing = 'PROD'
Then '[email protected]'
Else '[email protected]'
End as 'CC'
, '' as 'BCC'
, '[email protected]' as 'Reply-To'
, Case
When @Testing = 'TEST'
Then '***TEST***'
Else ''
End +
Case
When /*Problems Indicated*/
Then '@ReportName - Report Delayed'
Else '@ReportName for ' + CONVERT(varchar(10),getdate(),101)
End as 'Subject'
, 'Normal' as 'Priority'
, Case
When /*Problems Indicated*/
Then 'False'
Else 'True'
End as 'Include_Report'
, 'PDF' as 'Render_Format'
, Case
When /*Problems Indicated*/
Then 'High'
Else 'Normal'
End as Priority
, 'false' as 'Include_Link'
, Case
When /*Problems Indicated*/
Then '<html><Body><Font Face="Constantia","Times New Roman"><p>This Report could not be created at this time. We will send out an updated Report once the server issues have been resolved. If you have questions, please contact us.</p></Font></body></html>'
Else '<html><Body><Font Face="Constantia","Times New Roman"><p>Attached is the Report. When the report is run on a Monday, it does one thing.</p><p>Every other weekday, the report does something slightly different. Please note that the report is scheduled to run every weekday, Monday through Friday, regardless of holiday schedules.</p><p>If you have questions about the report, please contact us.</p><p>If the attached report is empty or missing vital information, click <a href="mailto:[email protected]?Subject=Problem%20with%20Report">here</a> to notify us.</p></Font></body></html>'
End as 'Comment'
From Problems
확실하지 않은 경우 ... 테스트 변수를 사용하여 이메일이 전송되기 전에 이메일을 보내고 있습니다.이 작업을 수행하는 좋은 이유는 별도의 TEST 및 PROD 서버에서 작업 할 때 두 서버에서 원하는대로 서브 스크립 션이 작동하는지 확인하기 위해서입니다. 내가하는 일은 PROD에 Testing = 'TEST'로 배포하는 것입니다. 모두 잘되면, 나는 Testing = 'PROD'를 바꾼다. –