쿼리 할 때 SSRS가 테이블을 잠그나요?


9

수석 DBA는 기본적으로 SQL 쿼리 실행이 테이블을 잠그지 않는다고 말했습니다.

SSRS (SQL Server Reporting Services) 보고서에 문제가 있었는데, 잠금 및 일부 오류가 발생하는 것으로 보입니다.

나는 인터넷 검색을했지만 아무것도 찾지 못했습니다.

SSRS 보고서는 쿼리중인 테이블을 잠급니까?

이 동작을 구체적으로 설명하는 MSDN 설명서가 있습니까?


우리도 같은 문제가있었습니다. 이 질문에 대한 기술적 대답하지 비록 우리가 가진 데이터 집합 쿼리를 시작하여 빠른 수정을 한 SET TRANSACTION ISOLATION LEVEL에, 예를 들어 READ UNCOMMITTED몇 더러운 읽기 위험 괜찮다면.
Jeroen

향후 참고 사항으로 SQL 2012의 AlwaysOn 가용성 그룹을 사용하여보고로드를 읽을 수있는 보조로 리디렉션 할 수 있습니다. msdn.microsoft.com/en-us/library/hh882437.aspx
wBob

답변:


7

짧은 답변 : 아니요

더 길게...

SQL Server는 SSRS가 쿼리를 보내는 지 알 수 없습니다. 따라서 SSRS의 쿼리는 다른 쿼리처럼 실행됩니다.

쿼리 최적화 프로그램이 SSRS 쿼리에 테이블 잠금을 사용하기로 결정했을 가능성이 높습니다. 물론 다른 문제 일 수도 있지만 다른 질문입니다


그렇다면 SRSS는 쿼리 할 때 테이블을 잠그려고합니까?
melaos

T-SQL 문은 T-SQL 문에 따라 특정 유형의 잠금 또는 다른 잠금을 발생시킵니다. 그것은에 의존하지 않는 곳 문 유래 (SSRS, 쿼리 창, 응용 프로그램 등)
에릭 히긴스

4

수석은 SQL 쿼리 실행을 위해 기본적으로 테이블을 잠그지 않는다고 말했습니다.

사실입니다. 그러나 쿼리 가 테이블을 잠글 수 없다는 의미는 아닙니다 .

SSRS 보고서가 실제로 쿼리중인 테이블을 잠그나요?

SSRS는 데이터베이스에 대해 쿼리 또는 저장 프로 시저를 실행하여 보고서를 렌더링하는 데 사용되는 데이터를 가져옵니다.

이 쿼리는 개발자가 정의 하며 격리 수준과 관련된 행 수에 따라 테이블을 잠글 수 있습니다 . (실제로이 작업 을 의도적 으로 수행하려는 경우가있을 수 있습니다 .) 결론은 잠금이 쿼리에 대해 작동하는 방식은 개발자의 몫입니다. SSRS는이 문제를 해결할 수 없습니다. 이것이 문서가없는 이유입니다.

다음을 고려하십시오 (예 :).

  • READ UNCOMMITTED더티 판독이 괜찮은 경우 사용
  • 스냅 샷 격리 수준 활성화 및 사용
  • 대기 모드에서 로그 전달 및 읽기 전용 사본에 대한 쿼리 실행

2

보고서가 실행될 때 어떤 잠금이 있는지 어떻게 알 수 있습니까? 보고서의 소스 인 쿼리 / 저장된 프로 시저를 확인하고 자체적으로 제대로 작동하는지 확인하는 것이 좋습니다.

소스 쿼리가 제대로 작동한다고 확신하는 경우 SQL Server 프로파일 러를 사용하여 문제를 찾아보십시오. 아래 링크가 도움이 될 수 있습니다 : https :
//.com/questions/9107383/sql-server-profiler-capture-calls-to-your-databases-stored-procs-during-ssrs


몇 가지 브라우저에서 보고서를 실행 중이고 보고서에 프로세스가 잠긴 상태로 잠겨 있다는 오류가 계속 발생하기 때문입니다.
melaos

이 경우 보고서가 다른 사용자가 잠근 데이터 (예 : 누군가 동일한 레코드를 업데이트 중)를 읽으려고합니다. 커밋되지 않은 데이터를 읽을 수 있으면 모든 "Select"문에 "잠금 없음"을 추가 할 수 있습니다.
Sky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.