증상
SQL Server 2014 또는 2016 Analysis Services 인스턴스의 측정 그룹에 대해 관계형 OLAP (ROLAP) 저장소 모드를 사용 한다고 가정 합니다. MaxRolapOrConditions advanced 속성 값을 256 보다 자세하게 설정한 후에는 해당 측정값 그룹에 대해 MDX 쿼리를 실행 합니다. 이 경우 다음과 유사한 오류가 나타납니다.
DOM 파서에서 스트림을 로드 하 고 구문 분석 하는 데 실패 #Error. URL: ' ' 원인: ' 작업이 중단 됨: 최대 요소-깊이 제약 조건을 위반 했습니다. ' 원본: ' '. 파일 위치: 0. 선: 6.
원인
Analysis Services는 의사 (pseudo) SQL 문서를 생성 하 고 XML 스타일 시트를 통해 구문 분석 되어 관계형 원본에 전송 되는 최종 SQL 문을 생성 합니다. 초기 내부 XML 문서를 생성할 때 또는 다음 예제와 같이 열에 대 한 조건이 중첩 된 XML 요소로 생성 됩니다.
<OR> <Condition>column1 = value1</Condition> <OR> <Condition>column1 = value2</Condition> <OR> <Condition>column1 = value3</Condition> </OR> </OR></OR>
Analysis Services에서 XML 문서를 작성 하는 데 사용 하는 MSXML DOM 개체에 대 한 기본 Maxelementdepth 속성 은 msxml 6.0의 256입니다. 따라서 MaxROLAPOrConditions 구성이 늘어나면 생성 된 XML 문서는이 최대 깊이를 초과할 수 있습니다.
해결 방법
이 문제는 다음과 같은 SQL Server 누적 업데이트에서 해결 되었습니다.
SQL Server 2016 RTM의 누적 업데이트 5
SQL Server 2016 SP1 용 누적 업데이트 2
SQL Server 2014 SP2의 누적 업데이트 4
SQL Server 2014 SP1 용 누적 업데이트 10
SQL Server에 대 한 누적 업데이트 정보
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.
추가 정보
이 수정은 각 추가 또는 조건이 이전 또는 XML 요소에 중첩 되지 않도록 중간 XML 문서를 생성 하는 방법을 변경 합니다. 따라서 256 보다 크게 MaxROLAPOrConditions 수 있습니다. 그러나 사용할 수 있는 조건 개수에 대 한 실질적인 제한은 여전히 있습니다. 또는 조건이 늘어나면 생성 되는 SQL 문의 복잡도가 관계형 데이터베이스 서버의 용량을 초과 하 여 새 오류 조건을 유발할 수 있습니다. 다음은 새 오류가 발생할 수 있는 조건의 예입니다.
-
문의 최대 매개 변수 수를 초과 하는 경우
-
Where 절의 최대 조건 수를 초과 하는 경우
-
SQL 쿼리 문자열을 구문 분석 하는 동안 오류가 발생 했습니다.
-
SQL 쿼리 문자열의 최대 크기를 초과 하는 경우
따라서 MaxROLAPOrConditions 구성 값을 조정 하는 것이 조심 스럽게 이루어지는 것이 좋습니다.
참조
Microsoft에서 소프트웨어 업데이트를 설명 하는 데 사용 하는 용어 에 대해 알아봅니다.