[performance] 빠른 쿼리는 SSRS에서 느리게 실행됩니다.

저장 프로 시저를 호출하는 SSRS 보고서가 있습니다. 쿼리 창에서 직접 저장 프로 시저를 실행하면 2 초 이내에 반환됩니다. 그러나 2005 SSRS 보고서에서 동일한 쿼리를 실행하면 완료하는 데 최대 5 분이 걸립니다. 이것은 첫 번째 실행에서만 발생하는 것이 아니라 매번 발생합니다. 또한 다른 환경에서는 이와 동일한 문제가 발생하지 않습니다.

이 특정 환경에서 SSRS 보고서가 그렇게 느리게 실행되는 이유에 대한 아이디어가 있습니까?



답변

여기에 제공된 제안에 감사드립니다. 우리는 해결책을 찾았고 매개 변수와 관련된 것으로 밝혀졌습니다. SQL Server는 ‘매개 변수 스니핑’으로 인해 SSRS 보고서에서 실행될 때 복잡한 실행 계획을 생성했습니다. 해결 방법은 저장 프로 시저 내에서 변수를 선언하고 들어오는 매개 변수를 변수에 할당하는 것입니다. 그런 다음 쿼리는 매개 변수가 아닌 변수를 사용했습니다. 이로 인해 SQL Server 관리자에서 호출하든 SSRS 보고서를 통해 호출하든 쿼리가 일관되게 수행되었습니다.


답변

프로 시저 끝에 다음을 추가하십시오. option(recompile)

이렇게하면 보고서가 저장 프로시 저만큼 빠르게 실행됩니다.


답변

비 저장 프로 시저 쿼리에서 동일한 문제가 있었다고 덧붙일 것입니다. 이를 수정하기 위해 데이터 세트 SQL 문 내에서 변수를 선언하고 SSRS 매개 변수와 동일하게 설정했습니다.

얼마나 성가신 해결 방법입니까! 그래도 대답에 가깝게 해주셔서 감사합니다!


답변

나는 같은 문제가 있었는데, 여기에 문제에 대한 설명이 있습니다.

“저는 2200 개의 행을 생성하고 거의 2 초만에 실행되는 저장 프로 시저를 만들었지 만 SSRS 2008에서 저장 프로 시저를 호출하고 보고서를 실행 한 후 실제로 실행되지 않았으며 궁극적으로 BIDS (Business Intelligence Development Studio)를 종료해야합니다. 작업 관리자에서 “.

내가 시도한 것 : reportuser Login에서 SP를 실행 해 보았지만 SP도 해당 사용자에 대해 정상적으로 실행되고 있었으며 Profiler를 확인했지만 아무런 문제가 없었습니다.

해결책:

실제로 문제는 SP가 결과를 생성하지만 SSRS 엔진이 이러한 많은 행을 읽고 다시 렌더링하는 데 시간이 걸린다는 것입니다. 그래서 SP에 WITH RECOMPILE 옵션을 추가하고 보고서를 실행했습니다. 기적이 일어나고 문제가 해결되었습니다.


답변

동일한 시나리오가 발생했습니다. 매우 기본적인 보고서 인 SP (1 개의 매개 변수 만 필요)는 10K 레코드를 다시 가져 오는 데 5 초가 걸리지 만 보고서를 실행하는 데 6 분이 걸립니다. 프로파일 러와 RS ExecutionLogStorage 테이블에 따르면 보고서는 쿼리에 모든 시간을 소비했습니다. Brian S.의 의견으로 해결책을 찾았습니다. SP의 AS 문 앞에 WITH RECOMPILE을 추가했습니다. 이제보고 시간이 SP 실행 시간과 거의 일치합니다.


답변

Tablix 속성에서 ‘각 페이지의 헤더 열 반복’을 선택 취소했습니다.


답변

저장 프로 시저가 연결된 서버 또는 openquery를 사용하는 경우 자체적으로 빠르게 실행될 수 있지만 SSRS에서 렌더링하는 데 시간이 오래 걸립니다. 몇 가지 일반적인 제안 :

  • 연결된 서버를 사용하여 데이터를 검색하는 대신 다른 데이터 원본을 사용하여 데이터가 저장된 서버에서 직접 데이터를 검색합니다.
  • 보고서를 실행하기 전에 원격 서버에서 로컬 테이블로 데이터를로드하여 보고서 쿼리를 단순하게 유지합니다.
  • 테이블 변수를 사용하여 먼저 원격 서버에서 데이터를 검색 한 다음 연결된 서버와의 조인을 직접 반환하는 대신 로컬 테이블과 조인합니다.

질문에 대한 답변이 확인되었으며, 누군가 이와 동일한 문제가있는 경우를 대비하여 추가하는 것입니다.