Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.

증상

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 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×