SSRS报告数据集未显示两个字段的正确数据

时间:2018-12-22 09:56:05

标签: sql-server reportbuilder3.0

首先了解环境。

  • RDL是在Report Builder 3.0(2016年前的版本)中设计的。
  • RDL托管在似乎是SSRS 2014 Reporting Services服务器上的原因(我之所以这么说,似乎是因为报表管理器和Web服务URL的别名是“ SSRS_2014”(而且DBA告诉我) )。
  • 我们的数据库服务器运行的是SQL Server 2014或2016。我的工作站上运行的是SQL Server 2017。

问题:

我有一个SSRS报告数据集,该数据集从非常标准的存储过程中检索信息。最近,我不得不更改一行代码,并在结果集中添加与此更改相关的列。在SSMS Query Analyser中测试存储过程时,可以按预期工作。以下是预期结果的摘录:

SSMS Query Analyser Results

但是在刷新数据集(添加新列)后,数据集现在在两列下针对所有返回的记录返回不一致的值,而当我在SSMS中运行它时,检索数据的存储过程正在返回值。即使我在查询设计器中运行它,它仍然返回不一致的值。

以下是屏幕截图:

Report Builder Query Designer

这不是共享数据集,据我所收集的报告,没有应用任何缓存。尝试查看是否存在,或尝试设置缓存时,报表管理器返回以下错误:

  

报表服务器数据库内发生错误。这可能是由于数据库中的连接失败,超时或磁盘空间不足所致。 (rsReportServerDatabaseError)   获取在线帮助有关此错误的更多信息,请导航到本地服务器计算机上的报表服务器,或启用远程错误。

如下:

Report Manager Processing Options Error Report Manager Cache Refresh Options Error

即使在以下情况下,也会发生此行为:

  • 我删除并添加了数据集。
  • 我删除并添加了数据源。
  • 我创建了一个新的数据源。
  • 我创建了一个新的RDL。
  • 我创建了存储过程的副本(重命名)。
  • 我将这些列的副本(重命名)添加到存储过程(它们的行为相同)。
  • 带有“处理查询时使用单个事务”选项(不显示)。

关键在于: (请记住,存储过程返回在SSMS中更正的数据)。 -当我对存储过程中的值进行硬编码时,这些值在通过SSMS查询分析器执行存储过程时出现,但在通过查询设计器运行存储过程时不出现(相同的不一致值)。
-我有另一个(摘要)报告,它通过另一个过程从此存储过程(嵌入式)获取数据。该报告正确返回数据。 -我试图创建第二个存储过程来执行此存储过程(类似于“摘要”所做的事情),但仍然行为不当。 -当我使用用于在SSMS Query Analyzer中测试存储过程的脚本时,它将返回值!但这不是理想的,因为已经定义了参数,并且当我删除这些参数时,它又恢复为正常(错误)行为。

我正在考虑添加一种快照表。存储过程将首先在其中构建数据,然后从该表中进行选择以返回数据的位置。这里的问题是此报告是由多个用户运行的,我没有时间(圣诞节前三天,我已经在圣诞节休假)去设计整个快照系统。 昨天我在互联网上做了很多研究。并遍历了以下站点/论坛中给出的所有建议:

Why is my SSRS report showing old data?

SSRS: field shows correct in query but wrong in report preview

How to clear cache of 1 stored procedure in sql server

https://jazz.net/forum/questions/243993/report-builder-not-showing-updated-data

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-freeproccache-transact-sql?view=sql-server-2017

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/e6f86f15-420c-4b64-bc70-01dea93a0995/report-results-and-query-results-returning-different-number-of-rows-why?forum=sqlreportingservices

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/9bc13904-a727-4786-9a11-693570f5f8d4/diable-the-cache-for-all-reports-in-ssrs-2008?forum=sqlreportingservices

还有其他有关缓存的内容,等等。

我什至让DBA重新启动该SSRS服务器,以查看是否可以刷新任何形式的缓存。 我还向存储过程添加了“ WITH RECOMPILE”提示,但无济于事。

所以我很茫然……我现阶段正在考虑采用存储过程的代码并将其作为嵌入式查询运行,但这不是最佳实践。 我们也正在将该项目移交给另一家公司,所以我不想离开他们(我感到很自豪)。

0 个答案:

没有答案