簡體   English   中英

替換2008 R2 SSRS中的參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM