[英]Replacing a parameter in 2008 R2 SSRS
我正在使用SSRS 2008 R2和報告構建器3.0。 我有一個級聯報告問題,我需要幫助。 第一份報告運行良好。 單擊報告中的鏈接會將@processID參數傳遞給后續報告。
現在,當在SSMS中直接使用字符串而不是參數運行查詢時,它需要不到1秒。 當我通過參數SSRS運行它需要大約15分鍾。 我已經讀過SSRS不能很好地處理參數。 我想要做的是找到一種方法將參數更改為字符串,然后發送或如果有人知道更好的方法。
以下是報告運行的查詢:
SELECT ResultDetail_View.processOid, ResultDetail_View.applicationId, outputItem.outputValue, ResultDetail_View.startTime, ResultDetail_View.resultStatus,
ResultDetail_View.statusMessage, ResultDetail_View.endTime, ResultDetail_View.ErrRec, COUNT(Summary.Id) AS SumRec
FROM ResultDetail_View LEFT OUTER JOIN
Summary ON ResultDetail_View.processOid = Summary.Id LEFT OUTER JOIN
outputItem ON ResultDetail_View.outputOid = outputItem.outputItemOid
GROUP BY ResultDetail_View.processOid, ResultDetail_View.applicationId, outputItem.outputValue, ResultDetail_View.startTime, ResultDetail_View.resultStatus,
ResultDetail_View.statusMessage, ResultDetail_View.endTime, ResultDetail_View.ErrRec
HAVING (ResultDetail_View.processOid = @processID)
ORDER BY ResultDetail_View.startTime
不管原來的問題,它看起來像你可以改變你having
一個where
不改變查詢結果? 如果是這種情況肯定會有助於提高績效。
關於參數嗅探,您是否嘗試過設置本地nvarchar
變量並在報告中以這種方式運行查詢?
delcare @processIDLocal nvarchar(50) = @processID;
select r.processOid
,r.applicationId
,o.outputValue
,r.startTime
,r.resultStatus
,r.statusMessage
,r.endTime
,r.ErrRec
,count(s.Id) as SumRec
from ResultDetail_View as r
left outer join Summary as s
on r.processOid = s.Id
left outer join outputItem as o
on r.outputOid = o.outputItemOid
where r.processOid = @processID
group by r.processOid
,r.applicationId
,o.outputValue
,r.startTime
,r.resultStatus
,r.statusMessage
,r.endTime
,r.ErrRec
order by r.startTime;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.