2

저는 MSSQL 및 SSRS를 처음 사용합니다.데이터 기반 구독 SSRS Standard Edition 2008

다음 작업을 수행하는 MSSQL 2008 Standard SSRS에서 데이터 기반 구독을 만들려고합니다.

보고서의 결과를 보고서에있는 전자 메일 주소로 전자 메일로 보냅니다. 실행 예 : 매일

:

Select full_name, email_address from users where (full_name = 'Mark Price') 

이 이메일로 누구인지 파악하기 위해 EMAIL_ADDRESS 열을 사용하는 것, 이것은 또한 여러 개의 이메일 주소의 여러 결과를 위해 일해야한다.

내가 생각하는 방식은 결과를 찾지 못하면 아무 일도 일어나지 않으면 서 쿼리를 실행하는 구독을 만드는 것입니다. 그러나 결과가 발견되면 보고서는 구독 테이블의 행을 변경하여 결과에서 발견 된 올바른 전자 메일 정보로 다음 분 내에 보고서를 다시 실행합니다. 바보 같은 생각인가요?

나는이 블로그가 작동한다고 주장하는 블로그 게시물을 발견했지만 코드가 무엇을하는지 충분히 이해하지 못했습니다.

그래서이 문제를 어떻게 해결할 지에 대한 제안이나 간단한 설명으로 인터넷에 이미 나와있는 것을 제안 할 수 있다면 어떻습니까?

+0

아니, 어리석은 아이디어는 아니지만 t 그는 MS 부분적으로 회신 대답은 SSRS 엔터 프라이즈 상자에 데이터를 기반으로 구독을 얻으려면 갈 것입니다. –

+0

누구든지 관심이 있다면 나는 포기하고 PHP로 그것을했습니다 :-) –

답변

1

이것은 SQL Server 2005 Enterprise 개발 상자에서 데이터 기반 구독을 사용하여 문제를 해결 한 다음 내 고객에게 Standard가 있다는 사실을 알게 해주었습니다.

그 당시에 나는 this post에 북마크를 붙였습니다. 매우 유망 해 보였지만 구현하기 전에 일자리를 옮겼습니다.

물론 2005 년을 대상으로하고 있지만, 그 중 하나가 2008 년에도 작동하는 것으로 보입니다.

0

서브 스크립 션 테이블을 수정하기 위해 서브 스크립 션을 생성하는 대신, SQL 에이전트와 같이 그 서브 스크립 션을 어딘가에 배치 할 것입니다. 그러나 아이디어는 같습니다. 정기적으로 실행되는 SQL은 구독 테이블의 행을 추가하거나 변경할 수 있습니다.

2005 년 기준으로 Here's an article의 유용한 결과가 있지만 Google의 원칙은 2008 년에 동일해야합니다. This article은 2008 년으로, 실제로 설명한 내용과 매우 비슷합니다.

난 그냥 구독 테이블에서 필드를 하나씩 살펴보고 각각에 필요한 것을 결정합니다. 수동으로 행을 작성하여 수동 삽입 문을 사용하여 자신에게 가입을 보내십시오.

0

구동 보고서를 SSRS 데이터를 지원하는 시장에 몇 가지 도구가 있습니다 :

이들은 데스크톱 도구이지만 SSRS를 대체하기 위해 확장하지 않으려 고 생각합니다. SQLServer Standard 버전에서 사용할 수 있습니다.

0

SQL 엔터프라이즈로 업그레이드 할 필요없이 타사 솔루션 인 SQL-RD를 사용하여 데이터 기반 일정을 만들고 실행할 수 있습니다. 또한 이벤트 기반 스케줄링 (데이터베이스 변경, 파일 변경, 수신 된 전자 메일 등의 이벤트에 대한 보고서 트리거)도 제공됩니다.

1

SQL Server Standard에서 Enterprise 용으로 지불하지 않으려 고했습니다. 첫째, "DDR 예약"이라는 보고서를 만들었습니다 (데이터 기반 보고서). 이 보고서에는 다음과 같은 매개 변수가 있습니다.

보고서에 대한보고 : 데이터 테스트가 충족 될 경우 트리거 할 SSRS 보고서 (폴더 포함)의 이름입니다. 예 : "/ Accounting/Report1".

매개 변수 집합 : 보고서에 사용할 매개 변수를 찾는 데 사용할 문자열입니다. 예 : "알파벳".

보고서를 실행해야하는지 확인하려면 쿼리에서 0 또는 0이 아닌 단일 값을 반환하는 SQL 쿼리를 실행하십시오. 0은 "이 보고서를 실행하지 마십시오."로 해석됩니다.

전자 메일 수신자 : 보고서가 실행되면 세미콜론으로 구분 된 전자 메일받는 사람 목록입니다.

"DDR 예약"보고서는 실제로 여기에서 실행되는 보고서이며 출력이 나에게 전송됩니다. 실행되는 것은 보고서입니다.이 경우 "/ Accounting/Report1"이고이 이메일 주소가 필요한 보고서입니다. 그래서 "일정 잡기 DDR"은 실제로는 보고서가 아니지만 일정이 잡히고 실행됩니다. 보고서를 작성하고 실행하는 가젯입니다. 이 경우 "ABC"- - 테이블의 레코드 세트가

CREATE TABLE [dbo].[ParameterSet](
      [ID] [varchar](50) NULL, 
      [ParameterName] [varchar](50) NULL, 
      [Value] [varchar](2000) NULL 
) ON [PRIMARY] 

각 매개 변수 세트를 다음과 같이

는 또한 정의 된 SQL에서 테이블을 가지고있다. 이 경우 레코드는 ABC/placecode/AA 및 ABC/year/2013 일 수 있습니다. 즉, ABC에는 placecode 및 year라는 두 개의 매개 변수가 있으며 값은 "AA"및 "2013"입니다.

CREATE PROCEDURE [dbo].[DDR3] 
    @reportName   nvarchar(200), 
    @parameterSet nvarchar(200), 
    @nonZeroQuery nvarchar(2000), 
    @toEmail  nvarchar(2000) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    select ddr.dbo.RunADDR(@reportName,@parameterSet,@nonZeroQuery,@toEmail) as DDRresult; 

    END 

RunADDR은 CLR입니다 :

SSRS에서의 "DDR 예약"보고서에 대한 데이터 세트는 DDR3가 저장 프로 시저입니다

DDR.dbo.DDR3 @reportName, @parameterSet, @nonZeroQuery, @toEmail; 

입니다. 어떻게 작동하는지에 대한 개요가 있습니다. 누군가 원하는 경우 일부 코드를 게시 할 수 있습니다.

  • 설정 자격 증명
  • 가 parameterSet 필드는 이러한 매개 변수 각각에 대한 예약합니다 DDR 보고서
  • 에서 전달 된 매개 변수를 설정 한 이름과 일치하는 ParameterSet 테이블의 모든 매개 변수를 선택
    • 검색된 행에 정의 된 매개 변수를 보유하도록 매개 변수 배열을 설정하십시오. (이것은 테이블을 사용하여 매개 변수를 동적으로 채우는 방법입니다.)
  • 종료 다시 제로 행을 가지고있는 경우
    • 는 그 다음 nonZeroQuery을 실행하고 종료 예약합니다 DDR에서 전달 된 "nonZeroQuery"값이 있다면
    • 합니다. (이것은 몇 가지 조건이 충족되지 않을 경우 쿼리 실행을 방지하는 방법이다, 뭔가 영 (0)을 반환하는 모든 쿼리가 보고서를 실행할 수 있습니다)
    • 지금 보고서를 실행하는 SSRS를 요청할 경우를 사용하여,
  • 끝 매개 변수를 우리는 테이블에서 추출하고 보고서 이름은 출력을 얻고 로컬 파일에
  • 이메일 예약합니다 DDR
  • 에서 전달 된 어떤 이메일 주소로 파일을 그것을 쓰기
  • 예약합니다 DDR에서 전달
관련 문제