증상
Microsoft SQL Server 2014에 클러스터형 columnstore 인덱스가 있는 테이블이 있다고 가정 합니다. 테이블에 대해 DDL 쿼리를 실행 하 여 기존 열의 데이터 형식을 변경 합니다. 예를 들어 다음 명령을 실행 하 여 Table_1의 Column_1에 대 한 데이터 형식을 VARCHAR (499)에서 NVARCHAR (500)로 업데이트 합니다.
ALTER TABLE Table_1 ALTER COLUMN Column_1 NVARCHAR(500) NOT NULL
이 경우 여러 어설션 오류가 발생 하 고 다음 오류 메시지가 나타납니다.
위치: <파일 경로> \Xmcolenc.inl: 413Expression: PF_CURRENT_STATUS = = PFS_OK (XMColumnEncoder<unsigned char *>:: EncodeValueForSecondary) spid: <SPID>프로세스 id: <프로세스 id ><파일 경로> \xmerror.cpp: 43Expression: 0 (PFSetLastError) SPID: <spid>프로세스 ID: <프로세스 id>설명: hr: 0x0
또한 SQL Server 오류 로그 폴더에 여러 메모리 덤프 파일이 생성 되 고 다음과 유사한 여러 오류 메시지가 SQL Server 오류 로그에 기록 됩니다.
<날짜 시간> Spid<ID> * * * <Disk Name 으로 전송 되는 스택 덤프>: e \ Files\Microsoft SQL Server\MSSQL12. SQL2014\MSSQL\LOG\SQLDump0002.txt<날짜 시간> Spid<ID> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <날짜 시간> Spid<ID> * <날짜 시간> Spid<id> * 시작 스택 덤프: <날짜 시간> Spid<id> * <날짜><>< Spid > id< * 개인 서버 빌드. <날짜 시간> Spid<ID> * <날짜 시간> spid<ID> * 위치 ID : 파일 경로 <\xmcolenc.inl>:413<날짜 시간> spid<ID> * 식: PF_CURRENT_STATUS = = PFS_OK<날짜 시간> spid<id> * (XMColumnEncoder<unsigned char *>:: EncodeValueForSecondary ) <날짜 시간> spid <id><* spid: 60 : 3680<날짜 시간> Spid<ID> * 설명: Hr: 0x0<날짜 시간> Spid<id> * <날짜 시간> spid<id> * 입력 버퍼 136 바이트-<날짜 시간> spid<ID> * 변경 테이블 Table_1 열 COL1 NVARCHAR (500)는 NULL이 아닙니다.
해결 방법
이 핫픽스를 적용 한 후 DDL 쿼리가 실패할 때 다음과 같은 새 오류 메시지가 나타날 수 있습니다.
보조 사전이 최대 크기 제한에 도달 하 여 ALTER TABLE 문이 실패 했습니다. Columnstore 인덱스를 삭제 하 고 열을 변경한 다음 새 columnstore 인덱스를 만드는 것이 좋습니다.
또한이 수정은 SQL Server 오류 로그에서 메모리 덤프 파일이 생성 되지 않도록 합니다 .이 문제는 SQL Server의 다음과 같은 누적 업데이트에서 처음 수정 되었습니다.
각각의 새로운 새 누적 업데이트에는 이전 누적 업데이트에 포함 된 모든 핫픽스와 모든 보안 수정 사항이 포함 되어 있습니다. SQL Server에 대 한 최신 누적 업데이트를 다운로드 하 여 설치 하는 것이 좋습니다.
상태
Microsoft는 "적용 대상" 절에 나열한 Microsoft 제품에서 이 문제를 확인했습니다.