首先,我了解运行极大/长时间运行的报告是一个可怕的想法。我知道微软有一条经验法则表明SSRS报告的执行时间不应超过30秒。然而,由于符合国家法律的外部力量,有时候庞大的报道是首选的邪恶。
在我的工作地点,我们有一个asp.net(2.0)应用程序,我们已经从Crystal Reports迁移到SSRS。由于庞大的用户群和复杂的报告UI要求,我们有一组屏幕接受用户输入的参数并创建要在夜间运行的计划。由于应用程序支持多个报告框架,因此我们不使用SSRS的调度/快照工具。系统中的所有报告都是由计划的控制台应用程序生成的,该应用程序获取用户输入的参数,并使用创建报告的相应报告解决方案生成报告。对于SSRS报告,控制台应用程序生成SSRS报告并通过SSRS Web服务API将其导出为PDF。
到目前为止,除了我们最近从水晶报告转换为SSRS的25,000页报告外,SSRS比Crystal更容易处理。 SSRS服务器是一个64位的2003服务器,有32个ram运行SSRS 2005.我们所有较小的报告都运行得非常好,但是我们在使用这个较大的报告时遇到了麻烦。不幸的是,我们似乎无法通过Web服务API生成上述报告。生成/导出大约30-35分钟发生以下错误:
异常消息:基础连接已关闭:接收时发生意外错误。
网络服务电话是我以前所见过的:
data = rs.Render(this.ReportPath, this.ExportFormat, null, deviceInfo,
selectedParameters, null, null, out encoding, out mimeType, out usedParameters,
out warnings, out streamIds);
奇怪的是,如果使用报表管理器直接在报表服务器上运行报表,则此报表将运行/ render / export。为报告生成数据的proc运行大约5分钟。报告在大约12分钟后以浏览器/查看器中的SSRS原生格式呈现。通过报表管理器中的浏览器/查看器导出为pdf需要额外55分钟。这可靠地工作,它产生了惊人的1.03gb pdf。
以下是我尝试通过网络服务API使报告正常工作的一些更明显的事情:
从我尝试的调整中,我很自在地说任何超时问题都已消除。
根据我对错误消息的研究,我认为默认情况下Web服务API不会发送分块响应。这意味着它尝试在一个响应中通过线路发送所有1.3gb。在某个时刻,IIS引起了人们的注意。不幸的是,API抽象出Web服务配置,所以我似乎无法找到启用响应分块的方法。
答案 0 :(得分:3)
- 无论如何都有人知道 减少/优化PDF导出阶段 和/或PDF的大小没有 降低总页数?
醇>
我有一些想法和问题:
这是一张图片密集的报道吗?如果没有,您是否有以文本开头但由SSRS PDF渲染器转换为图形的表格(检查您是否可以选择PDF中的文本)?每页41K可能比应该更多,或者可能不是,这取决于您的报告信息密集程度。但是我们遇到过一些情况,我们在报告的布局上遇到了一些小问题,例如表格渗透到页面的边缘,这导致SSRS PDF渲染器“甩手”并将表格渲染为图像而不是文本。显然,报表中的图形越少,文件大小就越小。
2.有没有办法可以轻松地将报告分成几部分?例如,如果它是一个10位置的报告,其中位置1后面是位置2,等等,在您的最终报告中,您是否可以独立于位置2部分运行位置1部分,等等?如果是这样,您可以在收到所有内容之后使用PDFSharp将10个子报告加入到一个最终PDF中。这会导致页面编号出现一些困难,但没有什么不可克服的。
3。有没有其他人有任何其他 关于为什么会这样运行的理论 服务器但不通过API?
我的猜测是报告的庞大规模。我不记得什么是IIS设置以及特定于SSRS的内容,但可能有一些整体的IIS设置(可能在Metabase.xml中),您必须更新甚至允许传递大量数据。
您可以通过使用其中一个工作报告并使用WAITFOR在存储过程中构建一个漫长的等待时间(假设您的DBMS使用SQL Server)来隔离时间是否存在问题。
本身不是解决方案,而是想法。希望它有所帮助。
答案 1 :(得分:3)
我们缩小了SSRS的大型PDF出口,发现了2个主要罪魁祸首
1)除非图像是JPG或PNG颜色类型3,否则它们将扩展为BMP的参见here
2)除非您将SSRS配置为其他方式(不推荐),否则SSRS会将字体或字体子集嵌入到PDF中,除非它们是5 'standard' PDF fonts之一。
虽然大多数Windows操作系统都没有安装任何标准字体(我猜不是符号),但我们发现如果您使用Times New Roman, Courier New, or Arial
,则会进行正向和反向字体替换。
转换RDL的最简单方法是将它们视为XML并搜索并替换FontFamily
标记。
如果您必须使用非标准字体,那么您仍然可以将损害降至最低:
答案 2 :(得分:2)
显然,它是一份巨大的报告,实际上它比报告更接近1.3 GB的数据库。
你有没有想过找到一种方法将它分成多个部分,然后将它们组合在一起? (使用几种不同方法之一来组合本网站上列出的PDF。)