RDL 보고서를 통해 RDLC를 사용하는 경우


117

저는 지난 몇 주 동안 SSRS 2005/2008을 공부했고 일부 서버 측 보고서를 작성했습니다. 일부 응용 프로그램의 경우 동료가 특정 상황에 대해 RDLC를 살펴볼 것을 제안했습니다. 나는 이제 RDL과 RDLC의 주요 차이점에 대해 고심하고 있습니다.

이 정보를 검색하면 기껏해야 조각난 정보가 생성됩니다. 나는 다음을 배웠다 :

  • RDLC 보고서는 데이터를 얻는 방법에 대한 정보를 저장하지 않습니다.
  • RDLC 보고서는 ReportViewer 컨트롤에서 직접 실행할 수 있습니다.

하지만 여전히 RDLC 파일과 다른 관련 시스템 (보고 서버, 원본 데이터베이스, 클라이언트) 간의 관계를 완전히 이해하지 못했습니다.

RDLC 파일을 잘 이해하기 위해 사용 방법이 RDL 파일과 어떻게 다른지, 어떤 상황에서 RDL보다 RDLC를 선택하는지 알고 싶습니다. 리소스 링크도 환영합니다.

최신 정보:

ASP.NET 포럼스레드에서 이와 동일한 문제에 대해 논의합니다. 이를 통해 문제에 대해 더 잘 이해하게되었습니다.

RDLC의 기능은 ReportViewer 컨트롤에서 완전히 클라이언트 쪽에서 실행할 수 있다는 것 입니다.

  • 이렇게하면 Reporting Services 인스턴스가 필요하지 않으며 데이터베이스 연결도 필요하지 않습니다.
  • 보고서에 필요한 데이터를 수동으로 제공해야한다는 요구 사항을 추가합니다.

이것이 장점인지 단점인지 여부는 특정 응용 프로그램에 따라 다릅니다.

내 응용 프로그램에서는 어쨌든 Reporting Services 인스턴스를 사용할 수 있으며 보고서에 필요한 데이터를 데이터베이스에서 쉽게 가져올 수 있습니다. RDLC를 고려해야 할 이유가 있습니까? 아니면 단순히 RDL을 고수해야합니까?

답변:


84

내 경험상 두 가지 모두에 대해 생각할 사항이 거의 없습니다.

I. RDL 보고서는 일반적으로 HOSTED 보고서입니다. 즉, SSRS 서버를 구현해야합니다. 보고 언어에 대한 SQL Server의 Visual Studio 확장 기능이 기본 제공됩니다. SSRS를 설치할 때 'Business Intelligence Development Studio'라는 추가 기능이 있어야합니다.이 기능은 보고서없이 작업하는 것보다 훨씬 쉽게 작업 할 수 있습니다.

R eport

D의 efinition

L angauge

RDL 보고서의 이점 :

  1. 서비스가 실행중인 환경에서 보고서를 호스팅 할 수 있습니다.
  2. 독립 실행 형 개념으로 보안을 처리하도록 항목 또는 상속 수준에 대한 보안을 구성 할 수 있습니다.
  3. 이메일을 발송하고 (접속할 수있는 SMTP 서버가있는 경우) 일정에 따라 파일을 저장하도록 서비스를 구성 할 수 있습니다.
  4. 일반적으로 'ReportServer'라고하는 데이터베이스가 있으므로 게시 된 보고서에 대한 정보를 쿼리 할 수 ​​있습니다.
  5. ASP.NET, WPF (winform 컨트롤 bleh! 포함)로 작성된 클라이언트 응용 프로그램의 'ReportViewer'또는 'ProcessingMode.Remote'를 사용하는 .NET의 Winforms를 통해 이러한 보고서에 액세스 할 수 있습니다.
  6. 사용자가보고 사용할 수있는 매개 변수를 설정하여 더 많은 유연성을 얻을 수 있습니다.
  7. 연결 문자열에 사용할 보고서의 일부를 '데이터 원본'으로 구성하고 SQL 쿼리, xml 또는 기타 데이터 집합을 '데이터 집합'으로 구성 할 수 있습니다. 이러한 부품 및 기타 부품은 정기적으로 데이터를 캐시하도록 저장 및 구성 할 수 있습니다.
  8. http : // / ReportServer / ReportingService2010 또는 / ReportExecution2005 서비스의 .NET 프록시 클래스를 작성할 수 있습니다. 그런 다음 코드에서 SSRS 보고서를 호스팅하는 서버의 서비스에서 직접 SSRS 데이터를 이메일로 전송, 저장 또는 조작하기 위해 .NET에서 OWN 메서드를 구성 할 수 있습니다. ReportService2010.asmx를 사용하여 SharePoint에서 프로그래밍 방식으로 SSRS 보고서 내보내기

단점 :

  1. SSRS는 다른 것들에 비해 빠른 속도로 작동하는 것과 비교할 때 일종의 경이 롭습니다. 대부분의 사람들은 보안 정책과 VS에 대한 '추가 기능'으로 보고서를 디자인하는 것에 혼란스러워합니다. SQL 2005 = VS BIDS 2005, SQL 2008 = VS BIDS 2008, SQL 2012 = VS BIDS 2010 (LOL).
  2. 계속해서 1 보안 설정 IMHO에 대한 정책은 어리석게도 지나치게 복잡합니다. 서비스를 위해 호스팅되는 페이지에는 서버 보안, 데이터베이스 보안 및 역할, 두 가지 보안 설정이 있습니다. 대부분의 사람들은 들어갈 수없는 관리자 만 설정하고 다른 사용자가 할 수없는 이유를 궁금해합니다. SSRS에 대한 가장 일반적인 불만이나 질문은 일반적으로 내 경험에서 들어오는 것과 관련이 있습니다.
  3. 보고서를 '향상'시키는 '표현식'을 사용할 수 있습니다. 종종 몇 가지 이상의 작업을 수행하고 보고서가 성능 크롤링으로 이동합니다.
  4. 할 수 있고 내보낼 수있는 작업의 양이 정해져 있습니다. SSRS는 자바 스크립트 해킹없이 내가 아는보고 위에 마우스를 올려 놓지 않습니다.
  5. 어리석은 SSRS 구성이 시스템을 재활용하고 첫 번째 보고서가 사이트를로드하는 데 시간이 걸릴 수 있으므로 속도와 성능이 타격을받을 수 있습니다. 이를 변경하여 해결할 수 있지만 연결 유지 서비스가 더 잘 작동하는 것으로 나타났습니다.

II. RDLC 보고서는 어디에도 호스팅되지 않는 클라이언트 포함 보고서입니다. 이름의 추가 c는 '클라이언트'를 의미합니다. 일반적으로 이것은 Visual Studio 클라이언트 응용 프로그램에서만 사용하기위한 RDL 언어의 확장입니다. '보고'항목을 추가하면 Visual Studio에 존재합니다.

RDLC 보고서의 이점 :

  1. wcf 서비스를 훨씬 더 쉽게 데이터 셋에 연결할 수 있습니다.
  2. 데이터 세트를 더 많이 제어 할 수 있으며 Entity 프레임 워크 개체 또는 ADO.NET으로 채워진 POCO 클래스와 테이블 자체를 직접 사용할 수 있습니다. 보고서에 바인딩하기 전에 최적화를 위해 데이터를 가져갈 수 있습니다.
  3. 코드 뒤에서 직접 추가 기능을 사용하여 모양을 더 많이 사용자 지정할 수 있습니다.

단점 :

  1. 매개 변수를 직접 처리해야하며 래퍼 메서드를 구현하여 다리 작업이 예상보다 조금 더 많고 불행하게도 도움이 될 수 있습니다.
  2. 사용자는 원격 모드에 있지 않고 RLD 보고서에 액세스하지 않는 한 'ReportViewer'컨트롤에서 매개 변수를 볼 수 없습니다. 따라서 컨트롤 외부에 텍스트 상자, 드롭 다운, 라디오 버튼을 직접 만들어 전달할 필요가 있습니다. 이 추가 컨트롤을 좋아하는 사람들은 개인적으로 그렇지 않습니다.
  3. 배포를 위해 보고서를 서비스하는 데 원하는 모든 작업은 직접 작성해야합니다. 이메일, 구독, 저장. 죄송합니다. .NET에서 빌드하거나 이미 위의 프록시를 구현해야 호스팅 된 보고서를 사용할 수 있습니다.

솔직히 나는 다른 목적으로 둘 다 좋아합니다. 분석가가 그래프, 차트, 드릴 다운 및 Excel로 내보내기를 항상 사용하고 조정하는 분석가에게 무언가를 전달하려면 RDL을 사용하고 SSRS 사이트에서 이메일 배포를 처리하는 모든 작업을 수행하도록합니다. 보고서 섹션이있는 애플리케이션을 원하고 애플리케이션이 규칙 및 거버넌스가있는 자체 모듈이라는 것을 알고 있다면 RDLC를 사용하고 매개 변수를 더 작게하고 사용자가 보고서 파트에 도달하기 전에 내린 결정에 따라 결정됩니다. 클라이언트가 사이트에 있고 일반적으로 시간 프레임이나 유형 만 선택하면됩니다. 따라서 일반적으로 복잡한 보고서는 RDL을 사용하고 간단한 것은 RDLC IMHO를 사용합니다.

도움이 되었기를 바랍니다.


57

Q : RDL과 RDLC 형식의 차이점은 무엇입니까?

A : RDL 파일은 SQL Server 2005 버전의 보고서 디자이너에서 생성됩니다. RDLC 파일은 Visual Studio 2008 버전의 보고서 디자이너에서 생성됩니다.

RDL 및 RDLC 형식은 동일한 XML 스키마를 갖습니다. 그러나 RDLC 파일에서 일부 값 (예 : 쿼리 텍스트)은 비어있을 수 있습니다. 즉, 보고서 서버에 즉시 게시 할 준비가되지 않았 음을 의미합니다. 누락 된 값은 SQL Server 2005 버전의 보고서 디자이너를 사용하여 RDLC 파일을 열어 입력 할 수 있습니다. (먼저 .rdlc의 이름을 .rdl로 변경해야합니다.)

RDL 파일은 ReportViewer 컨트롤 런타임과 완벽하게 호환됩니다. 그러나 RDL 파일에는 ReportViewer 컨트롤의 디자인 타임이 데이터 바인딩 코드를 자동으로 생성하는 데 의존하는 일부 정보가 포함되어 있지 않습니다. 데이터를 수동으로 바인딩하면 ReportViewer 컨트롤에서 RDL 파일을 사용할 수 있습니다. 새로운! RDL 뷰어 샘플 프로그램도 참조하세요.

ReportViewer 컨트롤에는 데이터베이스에 연결하거나 쿼리를 실행하기위한 논리가 포함되어 있지 않습니다. 이러한 논리를 분리함으로써 ReportViewer는 비 데이터베이스 데이터 소스를 포함한 모든 데이터 소스와 호환됩니다. 그러나 이는 ReportViewer 컨트롤에서 RDL 파일을 사용하는 경우 RDL 파일의 SQL 관련 정보가 컨트롤에 의해 무시된다는 것을 의미합니다. ADO.NET DataTables 형식으로 데이터베이스에 연결하고 쿼리를 실행하고 ReportViewer 컨트롤에 데이터를 제공하는 것은 호스트 응용 프로그램의 책임입니다.

http://www.gotreportviewer.com/


(CAN I를 사용하여 사용자 정의 객체 List<T>MyEntity원격 보고서 (대한 소스로) RDL ), 하지 RDLC ?
Kiquenet

21

RDL과 RDLC의 차이점은 항상 RDL이 SQL Server Reporting Services에 사용되고 RDLC가 Visual Studio에서 클라이언트 측보고에 사용된다는 것입니다. 구현과 편집자는 거의 동일합니다. RDLReport Defintion LanguageRDLC를 나타냅니다 Report Definition Language Client-side.

도움이 되었기를 바랍니다.


3
RDLC를 사용하면 일부 데이터베이스에 강제로 연결하지 않고도 보고서에 데이터를 수동으로 제공 할 수 있다는 사실을 깨달을 때까지 '클라이언트 측'부분에 대해 고심 할 수 없었습니다.
Daan

16

내 경험에 비추어 볼 때 대규모 보고서에서 고성능 (클라이언트 사양에 따라 약간 달라짐)이 필요한 경우 rdlc를 사용하십시오. 또한 rdlc 보고서는 데이터에 대한 매우 모든 범위의 제어를 제공하며 클라이언트 측 보고서를 사용하여 낭비되는 데이터베이스 여행 등을 절약 할 수 있습니다. 현재 작업중인 프로젝트에서 중요한 보고서는 서버 측에서 렌더링하는 데 약 2 분이 소요되며 그 시간 동안 어떤보고 서버를 사용하든 거의 제거합니다. 클라이언트 측 렌더링으로 전환하면 데이터 세트 만 다운로드되기 때문에 보고서 서버에 부하가없고 사용되는 대역폭이 적 으면서 20-40 초에 훨씬 가까운 성능을 볼 수 있습니다.

귀하의 마일리지는 다를 수 있으며 특히 귀하의 보고서가 서버 측 보고서로 설계된 경우 rdlc의 개발 및 유지 관리 복잡성이 추가됩니다.


성능과 관련하여 Reporting Services가 실행되는 원격 서버에 RDL 보고서를 저장하는 것이 가장 좋을 것이라고 생각합니다. 각 고객 워크 스테이션을 업데이트 할 필요가 없습니다 (한 사이트에서만 보고서 하나만 업데이트하면 됨). 2005 버전에는 메모리 누수가 있으며보고 서비스를 사용할 때 피할 수있는 몇 가지 사소한 버그가 있습니다.
Junior Mayhé 2010-06-18

1
나는 당신이 말하려는 것을 긍정적이지 않습니다. 우리는 이미 클라이언트 측보고를 사용하여 최상의 성능을 찾았습니다. 원격 서버의 RDL은 우리에게 큰 병목 현상이었습니다.
marr75 2010-06-24

2
이는 a) 보고서 서버의 상대적 처리 기능 및 b) 보고서 뷰어 컨트롤이 로컬 또는 원격 처리 용으로 구성되었는지 여부에 따라 크게 달라집니다. 로컬 처리 모드에서 보고서 뷰어 컨트롤을 사용하면 보고서 처리 작업이 클라이언트로 전송됩니다. 이는 보고서 서버에 워크로드를 처리 할 용량이없는 상황에서 유용 할 수 있습니다 (예 : 클라이언트가 많은 경우). 그러나 적절하게 사양이 지정된 보고서 서버는 대부분의 보고서 워크로드를 처리 할 수 ​​있어야합니다. 다른 병목 현상은 보고서 / 쿼리 디자인 및 데이터 소스 일 수 있습니다.
Nathan Griffiths

1
내가 대답 한 시점에서 서버 측 보고서는 동시 사용자를 잘 처리하지 못했으며 기본적으로 한 번에 하나의 요청 만 처리했습니다 (이 기능이 향상되면 매우 놀랍습니다). 게다가 우리 환경 (그리고 내가 가정해야 할 다른 많은 사람들)에서 보고서 렌더링은 데이터베이스 서버에서 수행 한 작업에 비해 매우 사소한 세부 사항입니다. 클라이언트 측 보고서를 통해 애플리케이션의 동시성 측면을 훨씬 더 많이 제어 할 수 있습니다. 그러나 시스템에 추가적인 복잡성이 추가됩니다. 따라서 엔지니어링 결정이 내려져야합니다.
marr75 dec.

@ marr75-서버 대 클라이언트 규모가 다릅니다. 서버 측에서는 25 명의 직원을 고용하고 모두 한꺼번에 서버를 공격 할 때 벽돌 벽에 부딪 힐 가능성이 더 큽니다. 클라이언트 측에서는 25 명 모두가 자신의 PC를 사용하여 부담을 덜어 주므로 회사가 성장함에 따라 서버 측 솔루션에 더 많은 베이비 시팅이 필요합니다. 즉, 서버를 더 최적화 할 수 있으며 한 곳에서만 수행하면됩니다. 올바른 인덱스를 구축 할 때 DBA가 필요합니다. 내 선호는 클라이언트 측을 사용하지만 최대 성능을 위해 둘 다 최적화하는 것입니다!
MicroservicesOnDDD

11

이러한 사항 중 일부는 위에서 다루었지만 여기에 VS2008 환경에 대한 2 센트가 있습니다.

RDL (원격 보고서) : 훨씬 더 나은 개발 경험, 일정 예약, 임시보고 등과 같은 일부 고급 기능을 사용해야하는 경우 더 많은 유연성을 제공합니다.

RDLC (로컬 보고서) : 보고서로 보내기 전에 데이터를 더 잘 제어합니다 (보고서로 보내기 전에 데이터를보다 쉽게 ​​확인하거나 조작 할 수 있음). 훨씬 쉽게 배포 할 수 있으며 Reporting Services 인스턴스가 필요하지 않습니다.

로컬 보고서에 대한 한 가지 큰주의 사항은 클라이언트가 많은 대규모 보고서를 실행할 경우 성능에 심각한 영향을 미칠 수있는 알려진 메모리 누수입니다. 이 문제는 보고서 뷰어의 새로운 VS2010 버전으로 해결되어야합니다.

필자의 경우에는 Reporting Services 인스턴스를 사용할 수 있으므로 새 보고서를 RDL로 개발 한 다음이를 로컬 보고서로 변환하고 (쉽게) 로컬 보고서로 배포합니다.


7

보고 서비스 인프라를 사용할 수있는 경우이를 사용하십시오. RDL 개발이 좀 더 즐겁다는 것을 알게 될 것입니다. 보고서를 미리보고 쉽게 매개 변수를 설정할 수 있습니다.


7

현재 는 RDL이 더 유연하고 관리하기 쉬워 보이므로 RDL에 의지하고 있지만 RDLC는 라이선스를 단순화하는 것 같다는 장점이 있습니다. RDLC에는 Reporting Services 인스턴스가 필요하지 않기 때문에 사용하는 데 Reporting Services 라이선스가 필요하지 않습니다.

이것이 최신 버전의 SQL Server에 여전히 적용되는지 확실하지 않지만 SQL Server Database 및 Reporting Services 인스턴스를 두 개의 개별 컴퓨터에 배치하기로 선택한 경우에는 두 개의 별도 SQL Server 라이선스가 필요했습니다.
http://social.msdn.microsoft.com/forums/en-US/sqlgetstarted/thread/82dd5acd-9427-4f64-aea6-511f09aac406/

Reporting Services 라이선스와 관련된 다른 유사한 블로그 및 게시물을 Bing 할 수 있습니다 .


3
SQL Server 라이선스를 사용하려면 SQL Server 구성 요소가 설치되어있는 모든 컴퓨터에 대해 라이선스가 있어야합니다. 따라서 보고서 서버 데이터베이스가 보고서 서버 서비스와 다른 서버에있는 수평 확장 배포에는 각 서버에 대해 별도의 라이선스가 필요합니다.
Nathan Griffiths

2

VS2008의 경우 RDL이 RDLC보다 더 나은 편집 기능을 제공한다고 생각합니다. 예를 들어 RDL을 사용하여 텍스트 상자에서 선택한 양의 텍스트에 대해 Bold를 변경할 수 있지만 RDLC에서는 불가능합니다.

RDL : abcd efgh ijklmnop

RDLC : abcd efgh ijklmnop 또는 efgh ijklmnop (유일한 옵션 임)

RDLC는 2005 년의 이전 네임 스페이스 / 형식을 사용하고 RDL은 2008을 사용하기 때문입니다. 그러나 이는 VS2010에서 변경됩니다.


4
이것은 rdl과 rdlc의 차이 때문이 아니라 SQL Server Reporting Services 2005와 2008의 차이입니다. SQL Server 개발에 뒤처진 Report Viewer 재배포 가능 패키지는 클라이언트 측보고를 지원합니다.이 지연이 차이의 원인입니다. 당신은 설명하고 있습니다.
marr75 2010

1
많은 버그로 인해 2005 (RDLC)에서 2008보고 서비스 (RDL)로 마이그레이션합니다.
Junior Mayhé

1

덜 복잡하고 asp.net 웹 페이지에서 사용하는 보고서 수가 적을 경우. rdlc를 사용하는 것이 더 낫습니다. RS 인스턴스에 대한 보고서를 유지 관리하는 것을 피할 수 있기 때문입니다. 그러나 우리는 DB에서 수동으로 데이터를 가져 와서 rdlc에 바인딩해야합니다.

단점 : Visual Studio에서 rdlc를 디자인하는 것은 SSrs 디자이너에 비해 약간 어렵습니다.

장점 : 유지 관리가 쉽습니다. 우리 페이지에서 보고서를 내보내는 동안 서버 측 보고서에 비해 성능이 향상되는 것을 관찰했습니다.


-3

asp.net에서 보고서를 사용하려면 보고서 작성기 / 보고서 서버에서 / view를 사용하려면 .rdl을 사용하고 수동으로 형식을 변환하여 .rdlc를 사용하면됩니다.


이것은 RDL과 RDLC가 실행되는 위치와 관련하여 교체 된 것으로 보이며 그렇지 않더라도 수십 개의 기존 답변에 유용한 정보를 추가하지 못할 것입니다.
underscore_d

rdlc는 로컬보고를위한 확장이며 aspnet, winforms 또는 wpf에서 사용할 수 있습니다. msdn.microsoft.com/es-es/library/ms252104.aspx . 당신은 원격 처리 모드에서 .rdlc 파일을 사용할 수 없습니다
dgzornoza
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.