MSSQLSERVER_8632
적용 대상: SQL Server
세부 정보
attribute | 값 |
---|---|
제품 이름 | SQL Server |
이벤트 ID | 8632 |
이벤트 원본 | MSSQLSERVER |
구성 요소 | SQLEngine |
심볼 이름 | QUERY_EXPRESSION_TOO_COMPLEX |
메시지 텍스트 | 내부 오류: 식 서비스 제한에 도달했습니다. 쿼리에서 잠재적으로 복잡한 식을 찾고 단순화해 보세요. |
설명
SQL Server에서 단일 식에 많은 수의 식별자와 상수를 포함하는 쿼리를 실행할 때 오류 8632가 발생합니다. 다음과 같은 오류 메시지가 사용자에게 보고됩니다.
서버: Msg 8632, 수준 17, 상태 2, 줄 1
내부 오류: 식 서비스 제한에 도달했습니다. 쿼리에서 잠재적으로 복잡한 식을 찾고 단순화해 보세요.
원인
이 문제는 SQL Server가 쿼리의 단일 식에 포함될 수 있는 식별자 및 상수의 수를 제한하기 때문에 발생합니다. 이 제한은 65,535입니다. 예를 들어 다음 쿼리에는 하나의 식만 있습니다.
select a, b + c, d + e
이 식은 5개의 열을 모두 검색하고 더하기 연산자를 계산한 다음 프로젝션된 결과 세 개를 클라이언트로 보냅니다.
SQL Server에서 참조된 모든 식별자 및 상수를 확장한 후 식별자 및 상수 수에 대한 테스트가 수행됩니다. 예를 들어 다음 항목을 확장할 수 있습니다.
- 선택 목록의 별표(*)
- 보기
- 계산된 열 정의
확장 후 개수가 제한을 초과하는 경우 쿼리가 실행되지 않습니다.
사용자 작업
이 문제를 해결하려면 쿼리를 다시 작성합니다. 쿼리에서 가장 큰 식에서 더 적은 식별자 및 상수 참조 쿼리의 각 식에 있는 식별자 및 상수 수가 제한을 초과하지 않는지 확인해야 합니다. 이렇게 하려면 쿼리를 둘 이상의 단일 쿼리로 분할해야 할 수 있습니다. 그런 다음 임시 중간 결과를 만듭니다.