KB4054398-FIX: "데이터 정렬 없음 때문에 비교가 잘못 되었습니다" 소매 어설션이 SQL Server 2014, 2016 및 2017에서 발생 합니다.

Microsoft 365를 사용하여 어디에서나 모든 장치에서 작업 가능

Microsoft 365으로 업그레이드하여 최신 기능 및 업데이트를 통해 어디서나 작업하세요.

지금 업그레이드

증상

Microsoft SQL Server 2014, 2016 및 2017에서 연결, CHAR 또는 VARCHAR 열에서 몇 가지 문자열 연산을 수행 하는 쿼리를 사용 하 고 있다고 가정 합니다. 다음과 같은 시나리오를 생각해 볼 수 있습니다.

  • 자신에 게 할당 된 서로 다른 데이터 정렬을 사용 하 여 열을 연결 합니다.

  • 이러한 데이터 정렬은 서로 호환 되지 않습니다. 예를 들어 Latin1_General_CI_AI Latin1_General_BIN와 같이 한 부씩 인쇄 되는 열을 연결 하려고 합니다.

  • 연결의 최종 결과는 데이터 정렬 충돌 해결의 결과로 특정 데이터 정렬 ("database_default" 포함)에 할당 됩니다.

이 시나리오에서 SQL Server는 "데이터 정렬이 없는 경우 잘못 된 비교" 라는 정품 어설션을 반환 하 고 다음과 유사한 오류 메시지가 나타날 수 있습니다.

위치: typinfo. cpp:LineNumber 식: false SPID: SPID 프로세스 ID: ProcessID 설명: 데이터 정렬이 없기 때문에 비교가 잘못 되었습니다.

메시지 3624, 수준 20, 상태 1, 줄 LineNumber 시스템 어설션 검사에 실패 했습니다. 자세한 내용은 SQL Server 오류 로그를 확인 하세요. 일반적으로 어설션 오류는 소프트웨어 버그 또는 데이터 손상으로 인해 발생 합니다. 데이터베이스가 손상 되었는지 확인 하려면 DBCC CHECKDB를 실행 하는 것이 좋습니다. 설치 하는 동안 Microsoft에 덤프를 보내려고 동의한 경우 미니 덤프가 Microsoft로 전송 됩니다. 최신 서비스 팩 또는 기술 지원의 핫픽스에 대 한 업데이트가 Microsoft에서 제공 될 수 있습니다.

메시지 596, 수준 21, 상태 1, 줄 LineNumber 세션이 중단 상태 이므로 실행을 계속할 수 없습니다.

메시지 0, 수준 20, 상태 0, 줄 LineNumber

현재 명령에 심각한 오류가 발생 했습니다.  결과가 있으면 삭제 해야 합니다.

원인

쿼리 최적화 단계에서 SQL Server는 여러 쿼리 스테이지의 중간 결과 (예: 연결)에 cardinalities를 계산 하려고 시도 합니다. 데이터 정렬 충돌 해결은 매우 끝에 발생 하므로 쿼리 최적화 프로그램이이를 인식 하지 못할 수 있으며, 충돌 하는 데이터 정렬을 사용 하 여 입력에 대 한 연결 카디널리티 계산을 수행 하려고 합니다.

해결 방법

이 문제는 다음과 같은 SQL Server 누적 업데이트에서 해결 되었습니다.

       SQL Server 2016 SP1 용 누적 업데이트 8  

       SQL Server 2017 누적 업데이트 4

       SQL Server 2014 SP2에 대 한 누적 업데이트 9

각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 확인 하세요.

SQL Server 2016의 최신 누적 업데이트

SQL Server 2017의 최신 누적 업데이트

SQL Server 2014의 최신 누적 업데이트

상태

Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.

참조

Microsoft에서 소프트웨어 업데이트를 설명 하는 데 사용 하는 용어에 대해 알아봅니다.

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

소중한 의견에 감사드립니다.

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×