使用以编程方式生成的数据集创建SQL Server报告

时间:2011-01-10 18:40:25

标签: .net reporting-services

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

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

提前致谢

2 个答案:

答案 0 :(得分:1)

一个不需要更改代码的选项是安排报告在设定的时间(可能是深夜)使用SSRS调度程序运行,并将报告发布到文件共享或以pdf格式通过电子邮件发送。但是,如果您尝试按需运行,此建议可能无济于事。 SSRS调度对于这类事情很方便。

答案 1 :(得分:0)

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

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

原因:

  1. 没有人会等待您的报告加载
  2. 你最后一次阅读5000页“报告”大声笑了...你也可以用zip文件给他们原始表。
  3. ASP.Net中的内存限制(32位系统为2GB)。避免“内存不足”错误。
  4. 这永远不会在电子邮件中用作附件。一旦导出,它将超过典型的最大10MB。
  5. 我在SSRS上制作了120多份报告,我一直在那里做完,所以我从经验告诉你,以便你将来避免更多的问题。我已经完全编写了自己的报表服务器UI替换图形树结构和大量额外的按钮和功能以及我自己的命令行报表服务器和正确的日志记录,以便我们可以验证电子邮件何时不会out and why,并使用伪造的电子邮件地址等重新定向预定的电子邮件......
  6. 添加正确的sql索引,如果花费10分钟就会出现问题。
  7. 执行此操作:

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

    SubReport(传递给它的cust_id参数):

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

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

    你应该做什么,而不是做老板告诉你的事情,切入追逐并询问他真正需要回答的问题。显然有人正在寻找一些东西来找到一个特定的答案,他没有意识到计算机可以为他做这件事。所以他希望整天感受到所有温暖而模糊的打印页面。最好制作一些专门的报告来回答特定部门等人的具体问题......而不是一刀切。这可以避免人们稍后告诉你添加或删除一个列,然后另一个人回来并无休止地抱怨。

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