저장 프로 시저를 호출하는 SSRS 보고서가 있습니다. 쿼리 창에서 직접 저장 프로 시저를 실행하면 2 초 이내에 반환됩니다. 그러나 2005 SSRS 보고서에서 동일한 쿼리를 실행하면 완료하는 데 최대 5 분이 걸립니다. 이것은 첫 번째 실행에서만 발생하는 것이 아니라 매번 발생합니다. 또한 다른 환경에서는 이와 동일한 문제가 발생하지 않습니다.
이 특정 환경에서 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 옵션을 추가하고 보고서를 실행했습니다. 기적이 일어나고 문제가 해결되었습니다.
저장 프로 시저가 연결된 서버 또는 openquery를 사용하는 경우 자체적으로 빠르게 실행될 수 있지만 SSRS에서 렌더링하는 데 시간이 오래 걸립니다. 몇 가지 일반적인 제안 :
질문에 대한 답변이 확인되었으며, 누군가 이와 동일한 문제가있는 경우를 대비하여 추가하는 것입니다.
32000 행을 검색하는 보고서에서 보고서 html 출력 문제가 발생했습니다. 쿼리는 빠르게 실행되었지만 웹 브라우저로의 출력은 매우 느 렸습니다. 제 경우에는 사용자가 첫 페이지를보고 Excel 파일을 생성 할 수 있도록“Interactive Paging”을 활성화해야했습니다. 이 솔루션의 장점은 첫 페이지가 빠르게 나타나고 사용자가 Excel 또는 PDF로 내보내기를 생성 할 수 있다는 것입니다. 단점은 사용자가 현재 페이지 만 스크롤 할 수 있다는 것입니다. 사용자가 더 많은 콘텐츠를 보려면 그리드 위의 탐색 버튼을 사용해야합니다. 제 경우에는 Excel로 내보내기가 더 중요했기 때문에 사용자가이 동작을 수락했습니다.
"대화 형 페이징"을 활성화하려면 보고서 창의 빈 영역을 클릭하고 속성 창의 보고서 수준에서 "InteractiveSize"\ "Height"속성을 변경해야합니다. 이 속성을 0과 다르게 설정합니다. 제 경우에는 8.5 인치로 설정했습니다. 또한 테이블 릭스 수준에서 "가능한 경우 한 페이지에 함께 유지"속성을 선택 취소했는지 확인합니다 (테이블 릭스를 마우스 오른쪽 단추로 클릭 한 다음 "Tablix 속성", "일반"\ "페이지 나누기 옵션").
우리의 경우에는 코드가 필요하지 않았습니다.
헬프 데스크의 참고 사항 : "인터넷 설정을 지우면이 문제가 해결됩니다."
"캐시 지우기"를 의미 할 수도 있습니다.