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

时间:2015-07-24 18:32:57

标签: sql-server reporting-services ssrs-2008-r2

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

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

当我定期运行报告时,它会超时。当我在设计器查询构建器中运行它时,它会超时。但是,当我将参数硬编码到查询构建器中时,它可以工作。 整个过程在Management Studio中运行良好

为什么当我在查询设计器中提供查询中的参数时,它会运行,但是当我通过报告填写参数时它不会? 这就是我在设计器查询构建器中所做的工作,使其能够快速进行测试。

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

编辑: 我把它变成了一个存储过程并运行它,即使在管理工作室也需要很长时间(60多分钟)。我添加了option (recompile)来阻止参数嗅探。

2 个答案:

答案 0 :(得分:1)

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

我忘记了理论是什么,但在此之前,这对我有用。

    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

尝试的另一件事(如果有的话)是部署到Report Server并从那里运行它。有些报告永远在Visual Studio中运行,但在RS中快速运行。

答案 1 :(得分:0)

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