2016-11-21 4 views
0

SSRS (Visual Studio 2010)에서 보고서를 만드는 데 사용하는 SELECT 문 (저장 프로 시저가 아님)이 있습니다.SSRS 보고서가 개발 중이지만 생산되지 않은 이유

매개 변수 @ClassCode는 문제를 일으키는 매개 변수입니다. 하지만 개발에서는 제대로 작동하지만, 프로덕션에 배포하면 영원히 렌더링됩니다.

나는 매개 변수 스니핑이라고 가정하고 있으며 저장 프로 시저 내부에서이를 수정하는 방법에 대해 읽었습니다. 하지만 SP가 없으므로 SELECT 문을 사용하고 있습니다.

SELECT 문에 대한 해결 방법은 무엇입니까? 그리고 환경의 차이점은 무엇입니까? 생산은 훨씬 더 강력합니다. 아래 내 쿼리 :

;WITH cte1 
AS 
(
    SELECT QuoteID, 
      AccidentDate, 
      PolicyNumber, 
      SUM(PaidLosses) as PaidLosses 
    FROM tblLossesPlazaCommercialAuto 
    WHERE InsuredState IN (@State) AND AccidentDate BETWEEN @StartDate AND @EndDate AND TransactionDate <= @EndDate AND Coverage = 'VehicleComprehensive' 
    GROUP BY QuoteID, 
      AccidentDate, 
      PolicyNumber 
), 
cte3 
AS 
(
SELECT  
      cte1.Quoteid, 
      cte1.PolicyNumber, 
      cte1.AccidentDate, 
      cc.TransactionEffectiveDate, 
      cc.ClassCode, 
       CASE 
       WHEN ROW_NUMBER() OVER (PARTITION BY cte1.QuoteID, cte1.PolicyNumber,cc.AccidentDate ORDER BY (SELECT 0))=1 THEN cte1.PaidLosses 
       ELSE 0 
      END as PaidLosses--, 
FROM  cte1 inner join tblClassCodesPlazaCommercial cc 
         on cte1.PolicyNumber=cc.PolicyNumber 
         AND cte1.AccidentDate=cc.AccidentDate 
      AND cc.AccidentDate IS NOT NULL 
    /* This is the one that gives me problem */ 
      WHERE cc.ClassCode IN (@ClassCode) 
) 
SELECT SUM(PaidLosses) as PaidLosses, c.YearNum, c.MonthNum 
FROM cte3 RIGHT JOIN tblCalendar c ON c.YearNum = YEAR(cte3.AccidentDate) AND c.MonthNum = MONTH(cte3.AccidentDate) 
WHERE c.YearNum <>2017 
GROUP BY c.YearNum, c.MonthNum 
ORDER BY c.YearNum, c.MonthNum 
+0

dev 및 prod 환경에 대해 SSMS에서 쿼리를 실행 해 보았습니까? 동일한 성능 차이가 있습니까? 그렇다면 쿼리 계획을 볼 수 있습니다. – SMM

+0

감사합니다. 두 번 테이블 스캔을 했어. 나는 이것이 문제라고 생각한다. – Oleg

답변

0

중고 튜닝 관리자는 인덱스와 통계 작업 부하를 필요로했던 것을 볼 수 있습니다. 그 (것)들을 창조 한 후에 - 모두는 잘 작동한다.