2011-01-10 69 views
0

我有一个SQL Server本地报表,其中包含大约5000页的内容(几乎每行都有图像)。 目前,我使用多次调用数据库来构建数据集,因为一次获取​​所有数据导致超时问题。 目前正在花费很长时间(大约10分钟)将报告呈现为使用本地报告中的Render方法的pdf。我读过使用本地报告来处理大量数据效率不高,通常需要更长的时间来处理。有什么办法可以将本地报告转换为服务器报告(请记住,我需要动态构建数据集)? 如果我将其转换成生成报告所需的时间,我会看到巨大的差异吗?使用编程生成的数据集创建SQL Server报表

编辑:需求是,这需要是一个按需报告。

在此先感谢

,需要在代码中没有变化

回答

1

一个选项是安排您的报告中使用SSRS调度在设定时间运行(也许在深夜)和报告发布到一个文件共享或以PDF格式发送电子邮件。但是,如果您尝试按需运行,则此建议可能无效。 SSRS调度对于这种事情是很方便的。

+0

我应该指定它需要是一个按需报告。对于那个很抱歉。 – zSynopsis 2011-01-10 18:45:47

0

如果报表中有5000页,则不是报表。没有人会浏览5000页,实际上100页被认为是过度的。

制作精简报告,就像包含摘要总计的目录一样,并将其用作导航工具,以便您可以单击摘要项并在详细信息报告中加载详细信息,该报告将一些值(如customer_id)作为一个参数。

原因:

  1. 没有人会等待您的报告加载
  2. 当是你最后一次阅读5000页的“报告”哈哈......你还不如给他们生在一个zip文件中的表。
  3. ASP.Net中的内存限制(对于32位系统,为2GB)。避免“内存不足”错误。
  4. 这永远无法作为附件在电子邮件中使用。一旦出口,它将超过10MB的典型最大值。
  5. 我已经在SSRS中发布了超过120个报告,我已经在那里完成了这些工作,所以我将从经验中告诉您,以便您在将来避免更多问题。我完全用图形树结构和大量额外的按钮和功能编写我自己的报表服务器UI替换,以及具有适当日志记录的我自己的命令行报表服务器,以便我们可以验证电子邮件何时不去并为什么,并重新定向电子邮件与虚假的电子邮件地址等...
  6. 添加适当的SQL索引,如果它需要10分钟的东西是不正确的。

做到这一点:

Main Report: 
Customer1 $1,000 
Customer2 $2,000 
All Customers: $5,000 

子报表(获取传递给它的CUST_ID参数):

Customer 1 $1000 
    Order1: $500 
    Item1: Socks 
    Item2: Shoes 
    Order2: $500 

注:当我说 “子报表” 我说的不是一个在工具箱。我的意思是一个单独的报告,它将customer_id作为参数,并从主报告中的某个文本框中导入一个“导航链接”,它将当前客户传递给子报表参数。

你应该真的在做什么,而不是去做你的老板告诉你正在切入的追求,并问他真的需要回答什么。很显然,有人正在寻找某种特定的答案,他并没有意识到计算机可以为他做这件事。所以他希望整天都能感受到温暖和模糊的印刷页面。做一些专门的报告来回答特定部门人员的具体问题总是更好的,而不是一个尺码。这避免了人们稍后告诉你添加或删除一列,然后另一个人回来抱怨无尽。

库存就是一个很好的例子。销售人员需要和库存数量和详细清单,财务审计员需要美元价值和项目的年龄缩减形式。

相关问题