Sql server 防止报表服务器等待获取服务器上的所有数据以显示报表
我有一个存储过程,可以返回大量的记录。因此,在Sql server 防止报表服务器等待获取服务器上的所有数据以显示报表,sql-server,stored-procedures,reporting-services,fetch,Sql Server,Stored Procedures,Reporting Services,Fetch,我有一个存储过程,可以返回大量的记录。因此,在reporting service中显示记录时,它会等待所有数据被提取出来,然后显示它们 我想知道是否有任何方法可以显示当前获取的记录以及附加到页面上的其他记录并准备好显示,这样用户就可以立即看到报告 编辑:我搜索报告服务并找到快照功能。虽然这有助于提高报告性能,但这是一种典型的离线方式 有趣的是,这个问题以前在Crystal report6或更高版本上出现过。 在Sql Server 2000中同样,当我们执行存储过程时,它会立即显示结果,但在ne
reporting service
中显示记录时,它会等待所有数据被提取出来,然后显示它们
我想知道是否有任何方法可以显示当前获取的记录以及附加到页面上的其他记录并准备好显示,这样用户就可以立即看到报告
编辑:我搜索报告服务
并找到快照功能。虽然这有助于提高报告性能,但这是一种典型的离线方式
有趣的是,这个问题以前在Crystal report6或更高版本上出现过。
在Sql Server 2000中同样,当我们执行存储过程时,它会立即显示结果,但在new Sql Server 2005和更高版本中,直到所有结果都被获取后才会显示结果 简短的回答是否定的。SSRS数据集不支持读取调用或部分检索结果集。在初始化报表呈现之前,它们调用execute并检索完整的结果集。生成大型报告时,通常不建议按需运行它们,除非它们支持分页。但是,分页只会限制SSRS服务和浏览器之间发送的数据,而不会限制SSRS服务和数据库之间发送的数据。SSRS仍将等待返回整个数据集get SP,然后再开始呈现第一页 最简单的解决方案是将数据集拆分为多个部分,向get SP添加参数以返回较小的数据集。或者,您可以尝试将页码传递给SP,并在每页上使用子报表 这里有4种基本策略可用于大型报告
不建议使用这样的子查询,因为它将很难更新或维护,再加上SQL中的所有额外查询、分组和表聚合,它的效率将大大降低,甚至可能比原始查询花费更长的时间。对于大型查询,建议使用订阅、缓存或快照。只有在成功执行报表中的所有数据集后,才可以设置可见报表区域。因此,在所有情况下,它都将等待检索所有数据。您需要显示所有数据,还是可以指定一个参数,用户选择该参数将数据限制在某个子集内。@SteveFord我不能这样做,原因有二,首先,我想为一个现有的应用程序生成报告,它的存储过程已经准备好了,我不能更改它们,第二,我想找到一种方法来实现这一点。这对我很有用,也可能会让其他人更容易通过大量数据工作。我读到了
使用分页
,但我找不到如何每次向浏览器发送一页。你能告诉我该怎么做吗?你是如何呈现报告的?擅长?pdf?windows窗体报表查看器控件?在浏览器窗口中显示报告?在浏览器窗口中显示报告如果在浏览器中显示,如果您的报告设置为支持分页控件,则分页控件应自动显示在浏览器窗口的左上角。我已经用另一个选项更新了我的答案,用于通过子报告实现这一点。据我所知,分页和断开用于在获取所有数据后设置页面。我在页面左上角看到寻呼机号码。但在大数据中,用户应该等待1分钟,2分钟。。。要加载所有数据,请使用分页。如果可能的话,我想消除这种等待