且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将 SQL Server Reporting Services 与 Crystal Reports 进行比较

更新时间:2023-01-29 14:53:28

一方面,Crystal Reports 是一大堆昂贵且被炒作的驴屎,另一方面 s-s-rS 实际上兑现了 CR 营销的所有承诺制作 - 而且它是免费的.

On the one-hand, Crystal Reports is a steaming pile of expensive and overhyped donkey poo, and on the other hand s-s-rS actually fulfils all the promises that CR marketing makes - and it's free.

我对 CR 的蔑视源于多年来***使用这种可怕的东西.当我可以为您提供 Clubbing the Crystal DodoCrystal Reports Sucks Donkey Dork(不是那么有趣,而是更多的知识和技术细节的证实).

My contempt for CR stems from many years of being obliged to use the horrible thing. There's really no point in detailing the utter odiousness of CR when I can give you references like Clubbing the Crystal Dodo or Crystal Reports Sucks Donkey Dork (not as funny but rather more literate and substantiated with technical details).

免费?!对.您甚至不必购买 MS SQL Server 即可获得它 - 您可以安装带有高级服务的 SQL Express.这可作为 下载包括 SQL Server 报告服务.虽然 SQL Express 可以支持的并发用户数量有限,但以下观察很明显:

Free?! Yup. You don't even have to buy MS SQL Server to get it - you can install SQL Express with Advanced Services. This is available as a download that includes SQL Server Reporting Services. While SQL Express is limited in the number of concurrent users it can support, the following observations are salient:

  • 获得的 s-s-rS 许可证为SQL Express 的一部分只需要将其部署为 SQL 的一部分表达.没有什么可以阻止的连接到其他数据源或要求报告获取数据来自 SQL Server.

  • The licence for s-s-rS obtained as part of SQL Express only requires that it be deployed as part of SQL Express. There is nothing forbidding connection to other data sources or requiring that a report obtain data from SQL Server.

上述版本的s-s-rS没有内在的限制用户连接.所有限制强加于 SQL Express数据库引擎.

The abovementioned version of s-s-rS has no intrinsic restrictions on user connections. All limitations are imposed on the SQL Express database engine.

s-s-rS 使用 ADO.NET,其中包括:开箱即用,Oracle 驱动程序,Jet(访问)、OLEDB 和 ODBC

s-s-rS uses ADO.NET, which includes, out of the box, drivers for Oracle, Jet (Access), OLEDB and ODBC

因此,您可以将免费版本的 s-s-rS 连接到您可以连接 ADO.NET 的任何后端,其中包括(例如)MySQL.Rory 在下面的评论中告诉我,这是不支持"的.这是真的,但我在许可证中找不到任何禁止它的内容,虽然驱动程序不是由 SSExpress 提供的,但它们肯定是由大多数版本的 Visual Studio 提供的,而您可以将它们装在您的安装套件中.这可能不是明确支持的配置,但那又如何?即使您确实拥有完整的 MSSQL 许可证,也希望 Microsoft 帮助您与某些第三方数据库进行对话(更不用说有点奇怪).

Thus you can connect the free version of s-s-rS to any back-end to which you can connect ADO.NET, which includes (for example) MySQL. I am told by Rory in a comment below that this is "not supported". That's true but I can't find anything in the licence that forbids it and while the drivers are not supplied by SSExpress they certainly are supplied by most versions of Visual Studio and you can ship them in your setup kit. This may not be an expressly supported configuration but so what? Even if you did have a full MSSQL licence it would be asking a bit much to expect Microsoft to help you talk to some third party database (not to mention a bit weird).

我在工作中广泛使用 s-s-rS 来生成面向内部的报告和嵌入在 ASP.NET 应用程序中的面向外部的报告,这些应用程序为大量付费客户提供办公室服务.在我们的例子中,后备存储恰好是 Microsoft SQL Server 2008 的许可副本,但这与我们的报告解决方案的技术优势无关.

I use s-s-rS extensively at work both for inward facing reports and for outward facing reports embedded in ASP.NET applications that provide bureau services to large numbers of paying customers. In our case it happens that the backing store is a licensed copy of Microsoft SQL Server 2008, but this is incidental to the technical merits of our reporting solution.

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

There is a long list of capabilities that Crystal Reports claims to support but which either don't work or which require a staggeringly expensive licence if you want more than five users. You can't even trust CR to do SQL correctly. SELECT COUNT(*) FROM SOMETABLE WHERE 1=0 should produce a result of zero but it it produces one. The built-in query engine is defective, and a team that screws up something a bunch of amateurs can do for free (eg MySQL) has no hope of getting anything you'd describe as performance out of their code.

他们没有.邪恶的东西像没有底的水桶一样泄漏内存,如果你使用SQL profiling工具你会发现它是效率极低.

And they don't. The evil thing leaks memory like a bucket with no bottom, and if you use SQL profiling tools you will find it is spectacularly inefficient.

至于所谓的支持,我个人可以证明,对话框调整大小错误在首次公开记录后几十年都没有得到纠正.如果你拿出你的信用卡并支付勒索的赎金(我也想要丰厚的报酬来支持这样的恐怖),你会发现自己在和一个声称他的名字是大卫的人交谈,但莫名其妙地发音为Dah-feet",谁连你的问题都听不懂,更别说有答案了.

As for the alleged support, I can personally attest that dialog resize bugs have gone uncorrected for decades after they were first publicly documented. If you get out your credit card and pay the extortionate ransoms demanded (I too would want handsome pay to support such a horror) you will find yourself talking to someone who claims his name is David, but inexplicably pronounces it "Dah-feet", and who doesn't even understand your question, much less have an answer.

s-s-rS 支持情况非常相似,但它确实有效,因此您并不需要太多.

The s-s-rS support situation is fairly similar, but it actually works so you don't really need much.

另一方面,s-s-rS 可以完成 CR 声称的所有事情.它并非没有错误,但它们非常少,而且它们很少能在一个以上的发布周期中存活下来.

s-s-rS, on the other hand, does everything that CR claims to. It is not without bugs, but they are delightfully few, and they seldom survive more than one release cycle.

s-s-rS 设计器 UI 托管在 Visual Studio IDE 中.它以典型的 Microsoft 风格呈现,极具吸引力,但不仅如此,它还经过深思熟虑,与传统报表设计器有几个简单但基本的不同之处.例如,要呈现表格数据,您需要定义一个表格,而不是摆弄单个文本框.因此,您不必费力地尝试将它们排列起来,并且在它们上添加边框是一项微不足道的样式表练习.

The s-s-rS designer UI is hosted within the Visual Studio IDE. It is attractively presented in typical Microsoft style, but more than this it is quite well thought out, incorporating several simple but fundamental departures from traditional report designers. For example, to present tabular data you define a table rather than fiddling about with individual text boxes. As a result you don't have to screw around trying to line them up, and putting borders on them is a trivial stylesheet exercise.

s-s-rS 实际上做了 CR 声称的所有事情,它价格便宜,有大量可靠的技术文档,它被设计为可扩展(也有文档),您可以将它连接到任何可以获得 ODBC 驱动程序的东西.这很简单.

s-s-rS actually does all the things CR claims to, it's inexpensive, there is extensive reliable technical documentation, it's designed to be extended (also documented) and you can connect it to anything for which you can get an ODBC driver. This is a no brainer.

  • 在页眉页脚中如何绑定字段并不明显.
  • 不可能(据我所知)相对于页面底部进行定位.对于某些类型的报告来说,这是一个真正的问题,而且我想不出任何解决方法.
  • 不支持在交叉表中展开水平汇总.
  • 不直接支持报表页眉和页脚.在报表布局的顶部和底部使用 Rectangle 对象,并适当设置分页属性.或使用子报表.抱怨这件事的人显然没有很努力.
  • 缺乏对重叠组间隔的支持(CR 分组系统可以做到这一点)更新 s-s-rS 2008 R2 现在支持这一点.它隐藏在分组编辑对话框中.查找组变量"和 阅读本文.
  • It is not obvious how to bind fields in page headers and footers.
  • It is not possible (so far as I know) to position relative to the bottom of a page. This is a genuine problem for certain types of report, and one for which I can think of no workaround.
  • There's no support for expando horizontal rollups in cross-tabulations.
  • There's no direct support for report headers and footers. Use Rectangle objects at top and bottom of the report layout, with pagebreaking properties set appropriately. Or use subreports. The people who complain about this obviously haven't tried very hard.
  • Lack of support for overlapping group intervals (the CR grouping system can do this) UPDATE s-s-rS 2008 R2 now supports this. It's buried in the grouping edit dialog. Look up "group variables" and read this.

实际上看起来重叠组也可以使用 s-s-rS2005 完成,尽管我从来不知道.我想知道有没有人破解过底部相对定位问题?

It actually looks like overlapping groups can be done with s-s-rS2005 too, although I never knew that. I wonder did anyone ever crack the bottom-relative positioning issue?