KB4054398 - 수정: "데이터 정렬 없음으로 인한 잘못된 비교" 소매 어설션은 2014년, 2016년 및 2017년 SQL Server 발생합니다.

적용 대상
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Standard on Windows SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

증상

Microsoft SQL Server 2014, 2016 및 2017의 CHAR 또는 VARCHAR 열에서 연결과 같은 일부 문자열 작업을 수행하는 쿼리가 있다고 가정합니다. 다음 시나리오를 고려하세요.

  • 열에 할당된 서로 다른 데이터 정렬을 사용하여 열을 연결합니다.
  • 이러한 데이터 정렬은 서로 호환되지 않습니다. 예를 들어 Latin1_General_BIN Latin1_General_CI_AI 데이터 정렬된 열을 연결하려고 합니다.
  • 연결의 최종 결과는 데이터 정렬 충돌 해결의 문제로 특정 데이터 정렬("database_default"포함)에 할당됩니다.

이 시나리오에서 SQL Server "NO COLLATION으로 인한 잘못된 비교"라는 소매 어설션을 반환할 수 있으며 다음과 유사한 몇 가지 오류 메시지가 나타날 수 있습니다.

참고

  • 위치: typinfo.cpp:LineNumber
    식: false
    SPID: SPID
    프로세스 ID: ProcessID
    설명: 데이터 정렬 없음으로 인한 비교가 잘못되었습니다.

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

  • Msg 596, Level 21, State 1, Line LineNumber
    세션이 킬 상태에 있으므로 실행을 계속할 수 없습니다.

  • Msg 0, Level 20, State 0, Line LineNumber

  • 현재 명령에서 심각한 오류가 발생했습니다.  결과가 있는 경우 삭제해야 합니다.

원인

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

해결 방법

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

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

2017년 SQL Server 누적 업데이트 4

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

SQL Server 대한 누적 업데이트 정보:

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

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

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

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

상태

Microsoft에서 이는 "적용 대상" 섹션에 나열된 Microsoft 제품에서의 문제임을 확인했습니다.

참조 자료

Microsoft에서 소프트웨어 업데이트를 설명하는 데 사용하는 용어에 대해 알아보세요.