KB2986423-FIX: 행 크기가 최대 허용 크기를 초과 하면 테이블에 새 열을 추가 하는 데 시간이 오래 걸립니다.

증상

Microsoft SQL Server 2012 또는 SQL Server 2014의 테이블에 열을 추가 한다고 가정 합니다. 행의 크기가 8060 바이트에 허용 되는 최대 크기와 가까운 경우 추가 작업에 시간이 오래 걸릴 수 있습니다.

원인

이 문제는 행의 총 크기가 최대 허용 행 크기에 근접 한 경우 SQL Server는 테이블의 전체 검사를 수행 하 여 새 열을 추가 해도 데이터 무결성을 위반 하지 않도록 합니다. SQL Server 2012 이전의 버전은이 검사를 수행 하지 않으며 DDL (데이터 정의 언어)이 더 빠르게 실행 되도록 합니다. 그러나이 동작은 행의 크기가 허용 되는 크기를 초과 하는 경우 행을 업데이트 하거나 축소 하는 등의 후속 작업에 오류가 발생 합니다.

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

추가 정보

  • 시작 매개 변수를 사용 하 여 추적 플래그 647를 설정할 수 있습니다. 자세한 내용은 데이터베이스 엔진 서비스 시작 옵션을 참조 하세요.

  • 다음 쿼리를 실행할 수 있습니다 (<테이블 이름> 실제 테이블 이름으로 바꿈) 하 여 프로덕션 시스템에서 작업 전에 특정 테이블을 테스트 하 고이 문제의 영향을 계획 하세요. 결과가 8060 보다 큰 경우 표에이 문제가 적용 됩니다. 또한 열을 삭제 한 경우에는 다시 작성 옵션을 사용 하 여 테이블을 변경 해야 합니다. 테이블을 다시 빌드하면 쿼리를 통해 올바른 결과가 반환 될 수 있습니다.

    select  1+1+2 + 2 +  (case  when sum (case when leaf_offset < 0 then 1 else 0 end) > 0 then 2 else 0 end)  +  ( (count (*) + 7)/8 ) + count (case when leaf_offset < 0 then 1 else null end) * 2 +  sum( case when max_length=-1 then 24 else max_length end)  from sys.system_internals_partition_columns   col join sys.partitions par on col.partition_id = par.partition_id  where object_id = object_id ('<table name>')  and  index_id in (0,1) and partition_number =1 
  • 응용 프로그램이 자주 테이블에 새 열을 추가 하는 경우 가변 길이 열 또는 스파스 열을 추가 하는 것이 좋습니다. 모든 열의 총 크기가 8060 바이트를 초과 하는 경우에도 메타 데이터 전용 작업입니다.

상태

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

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

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

이 정보가 유용한가요?

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

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

×