FIX: 열 데이터가 삭제 될 수 있습니다 SQL Server 2005에서 업그레이드 한 데이터베이스의 테이블에 있는 다른 가변 길이 열을 업데이트할 때

이 문서는 Microsoft 기계 번역 소프트웨어를 이용하여 번역되었으며 Microsoft Community에 의한 Community Translation Framework(CTF) 기술 혹은 사람이 번역한 내용에 의하여 사후 편집될 수 있습니다. Microsoft는 Knowledge Base에 있는 모든 문서에 다양한 언어로 접근할 수 있도록 하기 위하여 기계 번역, 사람에 의한 번역 및 커뮤니티가 편집한 내용을 모두 제공합니다. 번역된 문서는 어휘, 구문 및/혹은 문법에 오류가 있을 수 있습니다. Microsoft는 번역 오류로 인한 부정확성, 오류 및/또는 손해와 이를 고객이 사용하는 데에 대하여 책임을 지지 않습니다.

이 문서의 영문 버전 보기:3120595
현상
Microsoft SQL Server 2005에서 업그레이드 된 데이터베이스의 테이블에 가변 길이 열에서 값을 업데이트할 때 다른 가변 길이 열의 같은 행에는 데이터가 삭제 됩니다.

2014 Microsoft SQL Server 및 Microsoft SQL Server 2012에서이 문제가 발생합니다. 다음 시나리오는이 문제에는 데이터베이스에 노출 될 수 있습니다. 이 목록은 이벤트 시퀀스를 나타냅니다.

  • 데이터베이스는 SQL Server 2005에서 생성 됩니다.
  • SQL Server 2005에서 테이블을 변경 하 고 테이블 정의의 끝에 하나 이상의 가변 길이 열을 삭제 합니다.
  • 유사한 데이터 형식과 손실 된 열의 길이 가진 새로운 가변 길이 열을 추가 하는 경우.
  • 데이터베이스는 SQL Server 2005에서 2014 SQL Server 또는 SQL Server 2012로 업그레이드 됩니다.
  • 나중에 다른 가변 길이 열의 값을 업데이트 하 고 새 페이지에 대 한 오버플로 대 한 업데이트 된 데이터가.
이 시나리오에서는 새로 추가 된 열에서 같은 행에서의 데이터를 삭제할 수 있습니다.

스크립트에서 사용할 수 있는 자세한 내용 다음 사항을 확인 하려면 섹션.

  • 지정된 된 데이터베이스에서 테이블 삭제 가변 길이 열 여부
  • 오프셋 여부 가변 길이 열을 추가로 만든 일치 하는
참고: 이 문제는 DBCC CHECKDB가 검색 되지 않습니다.
해결 방법
참고: 이 수정 프로그램에만 문제가 향후 발생을 하지 않습니다.

중요: SQL Server 2005에서 데이터베이스 업그레이드 하는 SQL Server 2012 또는 SQL Server 2014를 하는 경우 "해결 과정" 절을 참조 하는 있는지 확인 하십시오.

이 문제는 SQL Server 용 누적 업데이트에 다음 처음 수정 되었습니다.

다음은 이러한 프로그램 버전에 대 한 최신 누적 업데이트입니다.

권장 사항: 2014 SQL Server 또는 SQL Server 2012에 대 한 최신 누적 업데이트를 설치 합니다.

모든 핫픽스를 포함 하는 SQL Server 이전 누적 업데이트에 포함 된 모든 보안 수정 프로그램에 대 한 각 새 누적 업데이트를 설치 합니다. SQL Server에 대한 최신 누적 업데이트를 확인해 보십시오.



참고: 최신 SQL Server 빌드에 대 한 자세한 내용은 참조 하십시오. 최신 SQL Server 대 한 정보를 찾을 수 있는 위치 구성.
해결 과정
중요: SQL Server 2012 또는 SQL Server 2014 및 UPDATE 문에 업그레이드 된 데이터베이스에서 실행 될 수 있도록 하기 전에 SQL Server 2005에서 데이터베이스를 업그레이드 하는 경우이 해결 방법을 적용 합니다.

테이블의 열을 삭제 하는 경우이 문제를 해결 하려면 업데이트 하거나 행을 삭제 하기 전에 다음과 같은 작업을 수행 해야 확인:

  • ALTER INDEX (...) 를 사용 하 여 클러스터 된 인덱스를 다시 작성 다시 작성
  • (...) ALTER TABLE을 사용 하 여 힙을 다시 작성 다시 작성

추가 정보
열이이 문제점의 영향을 받을 수 있는 지정된 된 데이터베이스에서 테이블 삭제 여부를 확인 하려면 다음 스크립트를 사용할 수 있습니다.

참고: 스크립트가이 문제 되지 않은 것을 의미 하는 모든 행을 반환 하지 않으면 시스템의 모든 테이블에 적용 됩니다.
SELECT DISTINCT OBJECT_NAME(sp.[object_id]) AS TableWithDroppedColsFROM sys.system_internals_partition_columns sipc1 WITH (NOLOCK)INNER JOIN sys.system_internals_partition_columns sipc2 WITH (NOLOCK)       ON sipc1.[partition_id] = sipc2.[partition_id] AND              sipc1.leaf_offset = sipc2.leaf_offset AND              sipc1.leaf_offset < 0 AND               sipc1.is_dropped < sipc2.is_droppedINNER JOIN sys.partitions sp WITH (NOLOCK) ON sipc1.[partition_id] = sp.[partition_id];

중요: 용도이 문서의 범위에 대해서만이 스크립트를 사용 해야 합니다.
현재 상태
Microsoft는 이 문제가 '적용 대상' 섹션에 나열된 Microsoft 제품의 문제임을 확인했습니다.

경고: 이 문서는 자동으로 번역되었습니다.

속성

문서 ID: 3120595 - 마지막 검토: 05/31/2016 08:26:00 - 수정: 11.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3120595 KbMtko
피드백