比较SQL Server Reporting Services和Crystal Reports [关闭]


84

使用哪种Crystal ReportsSSRS(SQL Server Reporting Services)更好?

Answers:


141

一方面,Crystal Reports充斥着大量昂贵且夸张的驴子便便,另一方面,SSRS实际上履行了CR营销所做的所有承诺-并且是免费的。

我对CR的蔑视源于多年不得不使用这种可怕的东西。当我可以为您提供诸如Clubing the Crystal DodoCrystal Reports Sucks Donkey Dork之参考文献时,确实没有必要详细说明CR的完全恶臭(不是很有趣,但更讲究文化,并且具有技术细节的依据)。

自由?!对。您甚至不必购买MS SQL Server即可获得它-您可以使用Advanced Services安装SQL Express。可通过下载获得该文件,其中包括SQL Server Reporting Services。尽管SQL Express可以支持的并发用户数受到限制,但以下观察结果很明显:

  • 作为SQL Express的一部分获得的SSRS许可证仅要求将其部署为SQL Express的一部分。没有禁止与其他数据源建立连接或要求报表从SQL Server获取数据的操作。

  • 上述版本的SSRS对用户连接没有固有限制。所有限制都施加在SQL Express数据库引擎上。

  • SSRS使用ADO.NET,它开箱即用地包含Oracle,Jet(Access),OLEDB和ODBC的驱动程序

因此,您可以将免费版本的SSRS连接到可以连接ADO.NET(包括(例如)MySQL)的任何后端。罗里在下面的评论中告诉我,“不支持”。没错,但是我在许可证中找不到任何禁止它的内容,尽管驱动程序不是由SSExpress提供的,但它们肯定由大多数版本的Visual Studio提供的,您可以在安装工具包中提供它们。这可能不是明确支持的配置,但是怎么办?即使您确实拥有完整的MSSQL许可证,微软还是会要求您帮助与第三方数据库进行对话(这很奇怪)。

我在工作中广泛使用SSRS来处理向内报告和嵌入到ASP.NET应用程序中的向外报告,ASP.NET应用程序为大量付费客户提供局级服务。在我们的案例中,后备存储是Microsoft SQL Server 2008的许可副本,但是这与我们的报表解决方案的技术优点无关。

Crystal Reports声称支持一长串功能,但是这些功能不起作用,或者如果您想要五个以上的用户,则需要昂贵的许可证。您甚至无法相信CR能够正确执行SQL。SELECT COUNT(*) FROM SOMETABLE WHERE 1=0应该产生零的结果但它产生了1。内置的查询引擎有缺陷,一个将大量业余爱好者可以免费做的事情搞砸的团队(例如MySQL),没有希望从其代码中获得任何您所描述的性能。

而且他们没有。邪恶的事情像无底的存储桶一样泄漏内存,如果您使用SQL性能分析工具,您会发现它效率极低。

至于所谓的支持,我可以亲自证明对话框调整大小的错误在首次公开记录后数十年未得到纠正。如果您拿出信用卡并支付要求的勒索赎金(我也希望获得丰厚的酬金来支持这种恐怖),您会发现自己正在与一个声称自己的名字叫大卫的人谈话,但莫名其妙地发音为“ Dah-feet”,甚至谁都不理解您的问题,更不用说答案了。

SSRS的支持情况非常相似,但是它实际上有效,因此您实际上并不需要太多。

另一方面,SSRS可以完成CR声称的所有工作。它不是没有bug,但是令人愉悦的是,它们很少,并且它们很少能够存活超过一个发行周期。

SSRS设计器UI托管在Visual Studio IDE中。它以典型的Microsoft风格进行了有吸引力的呈现,但不仅如此,它还经过深思熟虑,并结合了传统报表设计者的一些简单但基本的偏离。例如,要显示表格数据,您可以定义一个表格,而不是摆弄单个文本框。因此,您不必费力地尝试将它们对齐,而在它们上放置边框是一件琐碎的样式表练习。

SSRS实际上可以完成CR所声称的所有事情,它价格便宜,有大量可靠的技术文档,旨在进行扩展(也有文档),并且您可以将其连接到任何您可以获取ODBC驱动程序的地方。这是没有道理的。

SSRS的一些缺点

  • 如何绑定页面页眉和页脚中的字段并不明显。
  • 据我所知,不可能相对于页面底部定位。对于某些类型的报告,这是一个真正的问题,我认为对此没有解决方法。
  • 交叉表中不支持expando水平汇总。
  • 没有直接支持报表页眉和页脚。在报表布局的顶部和底部使用Rectangle对象,并适当设置分页符属性。或使用子报表。抱怨这件事的人显然并没有很努力。
  • 缺少对重叠的组间隔的支持(CR分组系统可以做到这一点)UPDATE SSRS 2008 R2现在支持此功能。它埋在分组编辑对话框中。查找“组变量”并阅读

实际上,看起来重叠组也可以使用SSRS2005来完成,尽管我从来不知道。我想知道是否有人破解过相对定位问题?


6
所以,彼得...您实际上不确定自己的位置吗?;-)其实,我全心全意同意!
AR。

3
同意-但请注意,您的示例SQL-从SOMETABLE WHERE 1 = 0中选择COUNT()-不是一个很好的示例,因为这应该返回单行和单个字段-COUNT(的值正好为0-必须始终返回。
AviD

15
“ SELECT COUNT(*)FROM SOMETABLE WHERE 1 = 0”应返回一行,其中一列,其值为0。它在该单元格中返回的值为1,这是不正确的。这是一个错误,而且意义深远。
Peter Wone

3
你对“一群业余爱好者”是什么意思?
armonge 2010年

6
“一群业余爱好者”是指一群没有报酬的人。根据定义,执行服务而无需付款的人是业余爱好者。奥林匹克运动员是业余爱好者。
Peter Wone

20

我一直在使用Crystal Report直到版本10,并且一直在与ASP.NET应用程序一起成功完成我想要的工作。它在Web上的输出确实非常像WYSIWYG(所见即所得),并且向Excel和PDF的导出也很准确。打印也非常正确。

最近,我在SSRS 2005上工作了大约一年,并且一直生活在目睹如此众多的缺失,这些缺失也必须是开箱即用的。SSRS Web输出随不同的浏览器和diff分辨率而变化很大,并且很容易使开发人员感到不适。此外,报表查看器的滚动问题会使最终用户很早就生气,因为它基于使用IFRAME的HTML。(注意:Crystal 13在Web查看器中使用一个IFRAME,它会遇到零星的文字换行和重叠问题)。出口根本不好。您无法将图像左对齐或居中对齐,也无法指定图像的背景色。您无法居中对齐完整报表主体。可能的话,我已经使用了渲染的HTML数小时,并且想出了可以使之起作用的确切替代方法,但是我想SSRS开发人员并不知道这些简单的修复程序,因为可能他们从未使用过SSRS。

此外,在Web应用程序中,需要为现成的参数承担不良的UI。我只是简单地将其完全删除,而在ASPX页面中创建它的成本使我考虑在DataGrids中设计表格报表,而不是使用ObjectDataSource和数据库分页技术。您无法根据需要布置参数。参数部分中的错误会回传完整的报告,而无需进行任何更改。使用分组进行分页是有技巧的,但是在完整的数据集上排序失败。对于中级到高级UI需求的每一点,SSRS花费大量时间弄清楚根本不可能。由于SSRS用户较少,因此在线社区没有解决简单问题的好的方法。不要忘记SSRS的优点是它的部署,内置的通知,缓存和配置方面,但没有UI可以胜任。

底线是,我看到SSRS令您感到沮丧的原因仅仅是Microsoft支持团队的反应迟钝,他们不得不说“对不起!一个月后 SSRS 2008也没有立即解决许多此类问题。而且,升级到SSRS'08也意味着后端平台的完整迁移。请记住,使用软件的次数越多,随着时间的推移它就会变得越成熟,Crystal总是一个更好的选择,因为SSRS很快会自己花费很多时间来修复其错误。


2
+1代表我到目前为止所见的唯一可信的反驳。我应该指出,“我不知道如何使它成为X”与“它不能成为X”是不同的。我个人认为Microsoft支持比CR支持更好。
Peter Wone

3
tl; dr(需要格式化)
gt

2
您是否尝试过SSRS 2012对我们进行最新审查?
2012年

2
/ me在考虑Talha是否可以加入CR支持团队。
Lynn

@Arvand我相信,如果密切关注SSRS 2012,他们会发现它与SSRS 2008几乎完全相同。这一事实对于我一直在从事的项目而言并不是一个积极的发现。
大卫·坦西

15

您可以通过包括3个DLL文件来使用Reporting Services部署应用程序。那是一个巨大的好处。(注意-您必须从GAC获取3个DLL文件之一。)

使用Crystal Reports,您必须在运行该应用程序的每台计算机(网站或客户端应用程序)上安装运行时。

Reporting Services具有大多数人需要的所有功能,并且部署更加容易。除非必须,否则我永远不会使用Crystal Reports。


报告服务的文档要好于CR
Cheung Cheung

1
“使用Crystal Reports,您必须在运行该应用程序的每台计算机(网站或客户端应用程序)上安装运行时。” -您的意思是,如果我是网络用户并想看到CR,那么我必须安装一些软件???
罗伊·纳米尔

这个答案是指客户端的报告,我想
surfen

15

由于该线程突然弹开,我将加两分钱。在版本7和8天中,我不得不使用Crystal大约三年。我讨厌它的每一分钟。我看过一些较新的版本,但仍然不喜欢它。

我非常不喜欢它,以至于我不敢这样说:根据我的经验,Crystal比SSRS更适合复杂的报告。我和我的一位同事拼命地尝试让一个中等复杂的报表布局在SSRS中工作并放弃了。我对产品的印象-只是我的意见,请注意-是它还没有做好准备。

Crystal会让您讨厌生活并寻找另一份工作,但是有一个原因使它如此无处不在:它有效。


1
+1是为了澄清最重要的原因,这不是技术优势,而是使用Crystal Reports的痛苦。
queen3

14

根据我的经验,Reporting Services更好。这是一个更好的环境,但是所有连接(数据源)中的最佳连接都与报表分离,并且可以共享。这样可以简化环境之间的部署。


8

我都用过了,我会在已经说过的地方加上几点:

  • 对于简单的内容,我建议默认使用SSRS。水晶有点肿和古怪。

  • Crystal可以轻松导出为MS Word格式(.doc)。根据我的经验,客户经常希望这样做。

  • 如果格式化很重要,Crystal可能会更好。例如,SSRS报告在一个文本框中最多只能包含一种类型的文本。就是说,报告顶部的注释不能同时包含斜体和普通文本。水晶可以做到这一点:


注意:此报告包含从开始日期到结束日期(包括那些日期)的数据。


SRSS不能(没有多个重叠的文本框)。我曾经给我一个20页的单词文档,然后将其转换为包含十几个图形和表格的数据的报告。我从SSRS开始,但是意识到在Crystal中,我可以直接从单词中复制并粘贴报告的硬编码位,并带有彩色标题和所有内容,从而节省了工作时间。因此,Crystal在许多方面确实有一个更好的“设计师”。

更新:
显然,这两个问题已在当前的SRSS中修复。有人愿意对此发表进一步评论吗?


3
此评论有点误导或过时。SSRS至少可以在2008年导出到DOC,并且可以在文本框内进行格式化(甚至可以在其中进行HTML格式化)。
queen3

用我的语言(波斯语,RTL),“没有多个重叠的文本框”,我每个单词应该使用一个文本框!WTF?
Behrooz

没办法这样说,所以我会直言不讳。人们不会因为需要工具而创建工具,而是为了赚钱而使用工具。三百年来,RTL语言在商业上并不重要。
Peter Wone

4

我同意@Carlton的部分原因是他描述的原因。我还认为,报表服务是一种更成熟的产品(即使Crystal Reports出现的时间更长)。测试和部署模型非常有用,并且跟踪报告使用情况的内置功能非常有帮助。

我还发现在Reporting Services中设计报表要容易得多-微软已经学会了如何构建良好的IDE,而Crystal IDE似乎一直都是事后的想法(尽管这比过去的事要好得多) 。

编辑:其他想法我也认为,在Windows商店中,SSRS提供了与OS和SQL Server的各种有效集成。您可以非常轻松地依靠SQL程序集在SSRS中重用内置代码,并且与Active Directory安全模型的集成使保护报告非常容易。


4

伙计...我的公司有很多水晶报告...而在那之前的公司也有很多。从8.5版到11.5版。可以这么说,他们已经把脚踩在门上了。我认为CrystalReportViewer有点废话,但它确实起作用(大部分情况下)。

阅读了一些答案后,我将为下一个报告项目切换到SSRS!文字在墙上... MS将从VS中删除Crystal并替换为SSRS。唯一会吸引的是MS开始为其充电。

编辑:今天与SSRS混在一起,看起来很有希望。我必须说,设计师已经习惯了... CR设计师在易用性方面胜于竞争对手。您可以说这是为程序员设计的,因为CR适用于报表设计人员。

EDIT2:SSRS确实不能满足我的报告需求。当您要预览并且没有参数提示可用于独立版本时,设计报告很糟糕。有没有更好的方法来设计它们……最好不是在VS中?


他们将永远不会对RS本身收费,但他们始终会对SQL Server收费,并将继续这样做。这只是使用SQL Server的另一个令人信服的理由。
阿道夫·大蒜

锁定SQL Server的另一种方法!
dotjoe

在设计报告时,您可以将参数默认为有用的值
cjk

1
Dotjoe:考虑到只有两种数据库选择(Oracle和SQL Server),您想锁定哪种解决方案?如果钱不是问题,那么我会选择Oracle,如果不是,那么我会选择SQL Server。
阿道夫·大蒜

1
我倾向于同意您在这里的大多数观点和这里的历史。如果您习惯于使用Crystal Reports,它并不是那么糟糕,但是确实存在缺陷。水晶可能很乏味,但确实可以达到目的。SSRS是另一种选择,但我认为它并不优越。从编程的角度来看,SSRS可能更好,但不一定能解决企业的数据需求。我认为,与SSRS(使用预定义的数据视图)相比,对于业务用户而言,使用它来编写自己的报告是一种更好的解决方案。
Dusty

3

您是否考虑过替代方案?如果您想使用Crystal Reports的功能但又不想花那么多钱,可以看看Crystal-Clear,它也是一种基于Java的报告工具,也支持Crystal Reports模板。它带有一个GUI设计器,并且每个系统都可以配置数据源。(几乎类似于ODBC,您只需为连接设置一个名称,然后在系统上配置该连接。)


+1我同意(看来我是一名水晶般清晰的开发人员,嘿嘿……)
Epaga

3

我想知道为什么没有人提到CR的一个大问题-它只是在源代码控制或团队环境中失败了。如果我错了,请指正我,但是对于任何报表差异工具,我真的都很努力。有一个(大约一年前发布的),但是它做得不好-不是因为它不好,而是(我猜)是因为CR只是没有正确地显示报表结构或其他东西...我试图将.rpt导出为XML,但是这是笨拙和错误的。我什至尝试编写自己的.rpt比较器。

这不仅仅与团队发展有关。即使只有一个开发人员,维护报表版本也是一个噩梦,而且如果您的客户决定添加一些内容或更改几种颜色,那么您现在就被迫跟踪每个文本框,因为绝对没有办法找出更改。

RDL格式更加干净开放。这可能是一个相当大的优势。


我从来没想过那个。但是以我的经验,使用CR的商店通常缺少诸如阶段发布管理和相关工具之类的便利设施。
Peter Wone

是的,而且您在此类商店和CR之间放置了等号,这一事实甚至说明了更多;-)
queen3 2011年

+1:特长。确实迫使提交者编写关于它们更改内容的完美日志。我认为大多数SC系统会将其视为二进制文件,这意味着不会合并。如果CR的下一个修订版支持基于文本的格式,我将非常高兴。
Lynn

2

我已经用了两年了。Crystal Reports收费过多,因此我会尽可能使用SSRS。但是,SSRS不支持Firefox或任何其他浏览器,仅支持IE,这是一个问题。Crystal中的报表看起来更好,导出功能更强大,用户希望良好地导出到Word。如果您是Java程序员,那么我会使用Jasper Reports,它是免费的,并且使用Java语言编写函数。


2

我曾经使用过(Crystal Reports 2008和SSRS 2008),因为我没有及时注意到此线程。

除了使用CR设置要容易一些之外,我没有注意到CR至少可以与SSRS相提并论的单个功能。是的,Crystal Reports确实很糟糕。

在我看来,CR中最糟糕的部分是IDE。但是,还有其他杀手级功能,例如较差的SQL性能和可怕的图形(至少在VS 2008附带的CR版本中)也是值得注意的“杀手级”功能。


2
嗯,我个人认为CR设计师很好,它的部门和团队概念也很强大。我可以用CR做令人难以置信的事情。它的底层级别更高,但这(例如在Photoshop中)仅允许做更多的事情。当然,这样做也使工作更痛苦;-)
queen3

不幸的是,我的经历更加痛苦了……
Adrian Grigore 2010年

3
您一直在说“杀手级功能”。我不认为这个词代表您的意思。
Vincent Vancalbergh,2011年

2

我曾与CR和SSRS一起工作过,这是我发现的。

Crystal Reports在其自己的内存中运行,而SSRS在有限的SQL Server内存中运行。

水晶报表太贵了。最近,他们将价格下调至250美元,我认为这是对SSRS 2008版本的回应。

SSRS是免费的。

Crystal报表蓬勃发展的最大原因是:

您可以使用SSRS设计项目中80%的报告。但是对于剩下的20%,您必须使用其他报告工具。这些20%的报告供高层经理,董事和首席执行官使用。他们的要求永远不会受到破坏,CR在这里做了出色的工作。

Crystal报表仍基于COM。这是一个痛苦的**。

Crystal Report并不缺乏功能。它是SAP的主力军。但是它的许多类都受到保护,并且不提供对程序员的访问。这是有意为之。SAP员工是如此贪婪,以至于他们希望控制每项功能,并收取额外的财富,以便在特殊的许可安排下向开发人员展示这些分类和对象。只需调试并快速查看VS中的ReportDocument对象,您将知道该对象中的所有可用内容,您几乎无法在代码中使用它们!

就GUI和CSS问题而言,期望一个专为精确打印而设计的COM对象在每个浏览器中正确呈现是一个有争议的问题,因为即使一个简单的div在不同浏览器中呈现的方式也不同。

从7年以来,我一直在使用Crystal报表,并且在积极探索所有其他替代方案的同时,一直在诅咒它。但是我还没有遇到像Cystal Report这样灵活的东西。对于大部分工作而言,SSRS很好。但是对于Dashboards,带有子报表的复杂报表,资产负债表,试算表,我永远不会在SSRS中浪费时间。

只需在Crystal Report上尝试Google趋势搜索即可。自最近6年以来,它一直在稳步下降。毫无疑问,CR的未来并不美好。

但是,嘿!MS,SAP和ORACLE仍将Crystal Report作为其应用程序的核心!而且没有BI产品会便宜。


1
我觉得这是一个令人惊讶的声明,但是您的回答总体上是有文化的和周到的,因此我会问这个问题,而不是嘲笑它。什么样的报告将超出SSRS的能力范围,不会超出著名的“高层管理人员,董事和CEO”技术能力范围?
Peter Wone 2012年

我可以说几份报告,但这超出了本讨论的范围。曾经尝试使用数组吗?尝试比较两者的内置功能。不是我不能在SSRS中设计那些报告。但是对于CR,我可以选择将许多类型的处理转移到CR本身,而不会给DB带来额外的负担。和编码。
2012年

客户通常希望将某些部分从一个地方转移到另一个地方,而使用CR可以轻松完成。通过内置变量,可以很容易地对部分进行页码,组项目值,首页,最后一页的自定义。每个部分都是完全数据绑定的,直到SSRS2008才使用SSRS。设计师要比SSRS好得多。MS专家应该在用户友好的GUI领域保持领先,然后是BO。差距正在迅速缩小,但是CR从第1天起就可以使用SSRS的一些新功能,但这是我个人的看法。
2012年

我只想在此说明您的几点-SSRS以它自己的进程(ReportingServicesService.exe)运行并管理它自己的内存-它不依赖于SQL Server内存,除非它使用ReportServerTempDB进行某些临时处理。
内森·格里菲思

1
同样,关于SSRS是“免费的”的看法也是一种普遍的误解。它是SQL Server产品附带的组件,该组件不是免费的(Express版本除外)。所有SQL Server组件(SSRS,SSAS,数据库引擎等)的成本都已计入SQL Server许可证的价格中。就是说,如果大多数或所有组件都得到利用,那么它无疑是一个引人注目的价值主张。
内森·格里菲思

1

我感觉自己像是一个火星人,对Crystal Reports拥有广泛而积极的(有时是复杂的)体验,该体验现已完全集成到我们的用户界面(VBA)中,在该用户界面中,所请求的报告参数和过滤器透明地从用户界面继承...


10
水晶和VBA?哎呀,我以为我的工作很烂
阿道夫·大蒜

2
你知道吗!甚至有些人靠Excel粪便谋生,我的意思是床单!
Philippe Grondier 09年

1

如果您正在考虑使用SSRS,并且担心它是“免费”的,但是您需要购买和购买额外的SQL Server许可证或分发SQL Express,那么您可能会对Data Dynamics报告感兴趣

它提供了SSRS中的所有功能,并添加了主报表,主题,日历数据区域,数据可视化(数据栏,迷你图,Iconset,ColorScale等),完整的对象模型,以实现最大的编程灵活性,免版税的最终用户报表设计器,条形码报告项目,Excel模板导出和数据合并等等。您可以从Data Dynamics(现为GrapeCity)下载一个试用版,并以少量报告尝试它,您不会失望的。


1

我现在和他们一起工作,并肩并肩看到他们。水晶一直很好,但多年来费用昂贵。它笨拙,但是我们已经习惯了它并且熟悉界面。我不在LAMP环境中工作,这家公司可以与MS Dynamics和MAS一起使用一些大型客户。

我喜欢不必担心SSRS的客户端安装。分发要容易得多,并且共享数据源和报告模型的情况良好。

就浏览器而言,我已经在Firefox中看到了完美呈现的SSRS 2008仪表。我已将这些量规导出到Excel,没有问题。我已经在有和没有MOSS的情况下将报告部署到了手机上。使用Windows身份验证来部署报告以及隐藏报告的功能非常棒。VS 2005和更高版本中的报表查看器对象很不错。


1

人们,请参考您正在谈论的版本!

例如,VS2008内置的免费RDLC报告(与SQL Server 2005 Reporting Services相同)不支持页眉和页脚中的绑定字段,这是一项基本功能!

现在,我正在将一个庞大的报告从VS2008 Reporting / RDLC 2005转换为Crystal Report 2008 Basic(随VS2008一起提供),因为它没有此基本功能。

我相信Reporting Services 2.0 / RDLC 2008(与Visual Studio 2010一起提供)以及更好的是最新的Reporting Services 3.0 / RDLC 2010在具有高级服务的SQL Server 2008 R2 Express中免费提供))是更好的SSRS解决方案。

具有高级服务(免费)的SQL Server R2 Express http://www.microsoft.com/express/Database/InstallOptions.aspx

目前,我正在为Reporting Services 3.0 / RDLC 2010进行概念验证,并将发布结果。

报表服务(SSRS / RDLC)总是更容易工作,但要付出代价却容易。对于简单的报告,请始终选择SSRS / RDLC。对于具有主从,页面控制等功能的复杂报表,请使用最新的SSRS / RDLC版本(2008、2010)以及Crystal Reports对这些情况进行PoC。


Re:绑定页眉和页脚中的字段-使用隐藏的文本框有一个变通的解决方法-请参阅msdn.microsoft.com/zh-cn/library/bb395166(SQL.90).aspx
StuartLC 2010年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.