적용 대상
SQL Server 2008 Service Pack 3 SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2008 R2 Service Pack 2 SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

증상

Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 또는 SQL Server 2014에 LOB (large object) 열이 포함 된 테이블이 있다고 가정 합니다. Lob 데이터의 크기를 작게 하 여 LOB 열을 업데이트 하 고 다음 메서드를 사용 하 여 사용 되지 않은 공간을 회수 하려고 합니다.

  • DBCC SHRINKDATABASE/DBCC SHRINKFILE

  • ALTER INDEX (LOB_COMPACTION = ON)

이 경우 사용 하지 않은 공간을 회수할 수 없습니다.

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

해결 방법

이 문제를 해결 하려면 다음 해결 방법을 사용 합니다.

  • 모든 행을 새 테이블로 내보내고 행을 다시 이동 합니다. 이렇게 하면 LOB 데이터가 재구성 되 고 사용 되지 않은 공간이 해제 됩니다.

  • EMPTYFILE 옵션과 함께 DBCC SHRINKFILE를 사용 하 여 모든 데이터를 새로 추가한 데이터 파일로 이동한 다음 오래 된 데이터 파일을 제거 합니다. 이렇게 하면 사용 되지 않은 공간을 해제 하 여 LOB 데이터를 재구성 합니다.

추가 정보

다음 예제에서는 업데이트 하기 전에 TSQL 명령 table_name sp_spaceused 사용 하 여 사용 되지 않은 공간을 보여 줍니다. lob 데이터의 작은 크기를 사용 하 여 lob 열을 업데이트 하기 전과 후에는 다음을 수행 합니다.

성을

하도록

데이터

index_size

사용 하지 않는

table_name

1000

261072 KB

261056 KB

16kb

0kb

업데이트 한 후 다음을 수행 합니다.

성을

하도록

데이터

index_size

사용 하지 않는

table_name

1000

261072 KB

199672 KB

16kb

61384 KB

상태

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

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.