【发布时间】:2015-07-24 18:32:57
【问题描述】:
我有一个包含 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) 以停止参数嗅探。
【问题讨论】:
-
当你使用 profiler 抓取需要 15 分钟的 SSRS 发送的命令,然后直接在 SSMS 中执行该命令时会发生什么?
-
它永远不会在 SSRS 中运行。当我在 SSMS 中执行存储过程时,到目前为止已经花费了 2 个小时,而当我使用查询本身的参数时,它需要 20 秒
-
您的“@PlantID”参数是否需要是多值列表?您的“IN”语句最有可能成为性能杀手。
-
好的,您最初的问题是“整个事情在 Management Studio 中运行良好”,这是一种误导。执行计划作为主要资源用户显示什么?
标签: sql-server reporting-services ssrs-2008-r2