Reporting Services中的简单SProc调用不返回任何数据,但查询有效

时间:2014-12-19 16:13:35

标签: sql-server reporting-services

我在SSRS 2014中有一份报告(在SharePoint 2013集成模式中,虽然我认为不重要)我有两份副本。一个副本在运行时运行以下查询,并按预期返回报告中的数据:

exec reports.sp_EvalQuestionsAndAnswers @EngagementCode=N'Engagement1',@LabIDs=NULL,@StartDate='2013-08-01 00:00:00',@EndDate='2014-12-18 00:00:00',@UTCoffset=-6

第二个副本在运行时运行以下查询,参数略有不同:

exec reports.sp_EvalQuestionsAndAnswers @EngagementCode=N'Engagement2',@LabIDs=NULL,@StartDate='2014-04-30 00:00:00',@EndDate='2014-12-19 00:00:00',@UTCoffset=-6

在Management Studio中运行这两个时,它们都会按预期返回数百行。但是,当第一个报告按预期返回数据时,第二个报告会从其中央选项卡显示其no rows returned消息。

我知道查询就像我展示的一样,因为我可以在SQL事件探查器中看到它们。

我甚至删除了第二个报告,复制了第一个报告,并更改了参数值(这是我能看到的唯一变化,实际上这不是手动更改 - 它们来自报告中的某些逻辑,基于何处报告发布在SharePoint中,并且发生了相同的结果。所以我知道我没有在报表生成器中破坏报表,因为我没有在报表生成器中触及它。

我不相信SSRS shows no records in report but query returns resultsReporting Services - Multi-value parameter query returning no results都不符合我的情况,因为我没有任何多值参数。

我还应该注意什么?

1 个答案:

答案 0 :(得分:3)

经过实质性调查后发现有两件事情发生了:

  1. 数据集的两个版本之间存在数据质量问题,在第二种情况下,由于缺少数据而在第一种情况下正确计算了sproc中的计算字段未正确计算。这需要很长时间才能解决,因为行返回并且在第一/第二/第三视图看起来有效。

  2. 报告tablix进行了过滤,有效地过滤掉了第二个数据集中的伪记录,导致了没有行"结果