SSRS 报告查询不起作用,但在硬编码参数时起作用

SSRS Report Query Not Working, but does when hardcoded parameters

我有一个包含 3 个参数的 SSRS 报告:

@start (datetime)
@end (datetime)
@plantid (string from an external query)

当我运行定期报告时,它超时了。当我 运行 它在设计器查询生成器中时,它超时。但是,当我将参数硬编码到查询生成器中时,它就起作用了。 整个过程在 Management Studio 中运行良好

为什么当我在查询设计器中的查询中提供参数时,它 运行s,但当我通过报告填写参数时却没有? 这就是我在设计器查询生成器中放入的内容,以使其能够快速进行测试。

Declare @start varchar(20),
        @end varchar(20),
        @plantid varchar(10)

        set @start='07/13/2015'
        set @end = '07/17/2015'
        set @plantid = 'mnp'

Select Division as 'Division', SUM(SALESQTY) as 'salesQTY',rtrim(Ltrim(salesline.itemgroupid)) as 'itemGroup'
FROM MiscReportTables.dbo.PlantDivisions 
inner join prodtable on prodtable.dimension2_ = MiscReportTables.dbo.PlantDivisions.Division
inner join SalesLine on SalesLine.InventrefId = ProdTable.ProdiD
WHERE PlantID IN (@plantid)
and SCHEDDATE between @start and @end
Group By Division,salesLine.itemgroupid

编辑: 我把它变成了一个存储过程并 运行 对它进行了处理,即使在管理 studio.I 中也需要很长时间(60 分钟以上) studio.I 添加了 option (recompile) 以停止参数嗅探。

您是否尝试过将参数分配给查询中的其他变量?

我忘记了这个理论是什么,但这在以前的类似情况下对我有用。

    Declare @start1 varchar(20),
    @end1 varchar(20),
    @plantid1 varchar(10)

    set @start1 =@start 
    set @end1 = @end 
    set @plantid1 = @plantid

Select Division as 'Division', SUM(SALESQTY) as 'salesQTY',rtrim(Ltrim(salesline.itemgroupid)) as 'itemGroup'
FROM MiscReportTables.dbo.PlantDivisions 
inner join prodtable on prodtable.dimension2_ = MiscReportTables.dbo.PlantDivisions.Division
inner join SalesLine on SalesLine.InventrefId = ProdTable.ProdiD
WHERE PlantID IN (@plantid)
and SCHEDDATE between @start and @end
Group By Division,salesLine.itemgroupid

要尝试的另一件事(如果有的话)是部署到报表服务器并从那里 运行 进行配置。有些报告在 Visual Studio 中需要很长时间,但在 RS 中 运行 很快。

我有一个类似的问题,使用了一种解决方法,即创建单独的参数,但是具有附加参数对于可用性来说是不可行的。因此,我随后将参数更改为具有默认值,这些默认值使用传入的日期中的值,这有效! (只需要隐藏第二组参数..)