DBCC SHRINKFILE 및 SHRINKDATABASE 명령이 sparsely 채워진된 텍스트, ntext 또는 image 열을 때문에 작동하지 않을 수 있습니다.

기술 자료 번역 기술 자료 번역
기술 자료: 324432 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

현상

DBCC SHRINKFILE 및 DBCC SHRINKDATABASE 명령을 데이터 않는 이동한 명령이 완료될 때 보고되는 MinimumSize 값을 EstimatedPages 값이 같은 경우 파일 크기를 줄입니다. 이진 대형 개체 (BLOB) 데이터 형식 가진 테이블에 대한 데이터 수정 쿼리는 인해 (sparsely (예를 들어, 1 익스텐트 컨트롤에 할당된 8 페이지) 데이터로 채워지는 할당된 많은 균일 익스텐트 하려면 DBCC SHRINKFILE 일으킬 수 및 DBCC SHRINKDATABASE 명령 수를 EstimatedPages, over-estimate 및 명령을 축소 작업을 수행하지 않는 가능하면 텍스트, ntext, 이미지). 데이터베이스 파일을 DBCC SHRINKFILE 실행한 후 일반적으로 경우, 이 동작이 발생합니다 전체 데이터베이스 백업을 크기를 8 번 데이터베이스 파일의 크기를 보다 작습니다.

해결 방법

영향을 받는 테이블이 이 상황을 해결하는 동안 계속해서 온라인 수 없는 경우 이 문제를 해결하려면 다음 해결 방법 중 하나를 사용할 수 있습니다.
  • SELECT INTO 문을 전체 테이블에 같은 데이터베이스의 새 테이블로 전송할 수 있습니다. 원래 테이블을 삭제하고 DBCC SHRINKFILE 문을 실행하십시오. 새 테이블을 원래 테이블 이름으로 바꿉니다.
  • 전체 테이블을 다른 데이터베이스에 새 테이블을 전송할 SELECT INTO 문을 사용하십시오. 원래 테이블을 자 및 DBCC SHRINKFILE 문을 실행하십시오. 원래 테이블에 데이터를 전송하십시오.
  • 대량 복사 프로그램을 전용 모드에서 테이블에 복사할 수 있습니다. 테이블 out 스크립트 및 기존 테이블에 놓습니다. DBCC SHRINKFILE 문을 실행하십시오. 새 테이블을 만들고 대량 복사 프로그램 데이터를 테이블로 다시 복사할 수 있습니다.
  • 데이터 변환 서비스 (DTS) 전체 데이터베이스를 새 데이터베이스로 전송할 수 있습니다. SQL Server 7.0 데이터 변환 서비스는 64KB보다 올바르게 text 및 image 데이터를 더 전달되지 않을 수 있습니다. 이 문제는 SQL Server 2000 버전의 데이터 변환 서비스 적용되지 않습니다. 자세한 내용은 아래 문서 번호를 눌러 Microsoft 기술 자료에 있는 문서를 클릭하십시오.
    257425FIX: DTS 개체 전송 64 보다 뛰어난 BLOB 데이터 전송 있지 않음
    다음 쿼리 사용하여 64 KB 보다 큰 텍스트 및 이미지 열을 찾을 수 있습니다:
    SELECT MAX (DATALENGTH (TextImageColumn)) FROM TableName
    64KB보다 큰 텍스트 및 이미지 데이터의 경우 전송 데이터 자릅니다 및 DTS에서 로그 파일을 제외하고는 모든 오류를 발생시키지 않습니다. 64KB보다 큰 텍스트 또는 이미지 데이터가 있는 경우 정보를 텍스트 또는 이미지 데이터가 있는 테이블 세 번째 글머리 기호 항목이 있습니다. 그런 다음, DTS를 나머지 데이터베이스의 항목 사용하십시오.
데이터베이스가 온라인 상태여야 합니다 데이터베이스의 크기를 외부 파일 또는 다른 데이터베이스 프로그램으로 데이터를 이동하려면 너무 큰 경우, EMPTYFILE 옵션을 사용하여 DBCC SHRINKFILE 명령을 사용할 수 있습니다. 이 해결 사용하려면 다음 이 단계를 수행하십시오.
  1. Microsoft SQL Server 7.0 서비스 팩 3 실행 중인 경우 추적 플래그 1180 및 1197 해제하십시오.
  2. Microsoft SQL Server 7.0 서비스 팩 3을 실행하는 7.00.987, 또는 나중에, 포함 서비스 팩 4 빌드할 경우 추적에서 해제할 1180 플래그입니다.
  3. 여러 파일에 대해 드라이브 공간 문제 또는 성능 향상을 통해 데이터베이스에 분산되어 있을 경우 다음 쿼리 결과를 비교할 총 크기가 ALTER DATABASE 명령을 사용하여 데이터베이스에서 하나 이상의 추가 파일을 만듭니다.
    select 'size in MB'=ceiling(sum(ei.pg_alloc)/128.000), sfg.groupname
    from extentinfo ei inner join sysfiles sf on ei.[file_id] = sf.fileid and ei.[file_id] != 1
     inner join sysfilegroups sfg on sf.groupid = sfg.groupid
    group by sfg.groupname
    참고: 앞의 쿼리가 이 문서의 "추가 정보" 절 쿼리에 의해 만들어진 테이블을 사용합니다. 또한 파일 크기 합계는 파일 그룹에 의해 나눌 수 있습니다.

  4. sparsely BLOB 균일 익스텐트 채워져 있는 각 파일의 두 번째 매개 변수로 EMPTYFILE 옵션을 사용하여 DBCC SHRINKFILE 쿼리를 실행하십시오.
  5. 이 문서의 "추가 정보" 절 extentinfo 테이블에서 동일한 스키마를 사용하여 하나 이상의 테이블을 만들어 DBCC SRHINKFILE 명령의 진행률을 추적할 수 있습니다. "INSERT.. 실행 EXEC import_extentinfo "새 테이블에 데이터를 채울 수 있는 쿼리입니다. 결과를 분석하려면 다음 쿼리를 사용하여:
    select [file_id], 'page count'=sum(pg_alloc), 'min page'=min(page_id), 'max page'=max(page_id) from extentinfo group by [file_id]
    또한 테이블 문자 같은 패턴을 시작하고 DBCC EXTENTINFO 명령 시간으로 근처에 만든 경우 DBCC EXTENTINFO 명령을 실행할 때 추적하기 위해 다음 쿼리를 사용할 수 있습니다:
    select crdate, [name] from sysobjects where type = 'U' and [name] like 'extent%' order by crdate
  6. DBCC SHRINKFILE 쿼리 완료될 때 실행할 경우 ALTER DATABASE 쿼리 데이터베이스에서 오래된 파일을 제거하십시오.
  7. 가능하면 3단계에서 만든 새 파일에 대한 TRUNCATEONLY 옵션을 사용하여 DBCC SHRINKFILE 쿼리를 실행하여 추가 공간을 제거할 수 있습니다.
  8. Microsoft SQL Server 7.0을 실행하는 경우, 1 또는 2 단계에서 설정한 추적 플래그를 해제하십시오.

추가 정보

sysadmin 권한이 있는 사용자로 로그인한 경우에는 다음 Transact-SQL 쿼리는 쿼리 분석기와 같은 모든 쿼리 도구에서 실행할 수 있습니다. DBCC SHRINKDATABASE 명령 및 DBCC SHRINKFILE 명령을 sparsely 때문에 파일을 축소할 수 없습니다 BLOB 균일 익스텐트를 채울 경우 결정하려면 SQL Server에서 Transact-SQL 쿼리를 실행합니다.

참고: 문제가 데이터베이스의 이름을 문자열 '< 데이터베이스 이름 >' 업데이트 및 이름을 작은따옴표로 묶어야 합니다.

use pubs
go
if convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 8
begin 
   create table extentinfo 
   (
   [file_id] smallint,
   page_id int,
   pg_alloc int,
   ext_size tinyint,
   obj_id int,
   index_id tinyint,
   pfs_bytes varbinary(10)
   )
end
go
if convert(int,substring(convert(binary(4), @@microsoftversion),1,1)) = 7
begin
   create table extentinfo 
   (
   [file_id] smallint,
   page_id int,
   pg_alloc int,
   ext_size tinyint,
   obj_id int,
   index_id tinyint,
   pfs_bytes varbinary(10),
   avg_used tinyint
   )
end
go
create procedure import_extentinfo as
dbcc extentinfo('<database name>')
go
insert extentinfo exec import_extentinfo
go

select [file_id],obj_id, index_id, ext_size, 'actual extent count'=count(*), 'actual page count'=sum(pg_alloc),
 'possible extent count'=ceiling(sum(pg_alloc)*1.0/ext_size),
 'possible extents / actual extents' = (ceiling(sum(pg_alloc)*1.00/ext_size)*100.00) / count(*)
 from extentinfo where ext_size != 1 and index_id = 255
 group by [file_id],obj_id, index_id, ext_size
 having count(*)-ceiling(sum(pg_alloc)*1.0/ext_size) > 0
 order by obj_id, index_id, [file_id]
인덱스_id 값이 255, 마지막 쿼리의 결과 행을 볼 경우, 가능한 익스텐트/실제 익스텐트 열은 미만의 75 및 이 데이터베이스 sparsely BLOB 익스텐트 채워져 있어야 것은 이 문서의 "해결 방법" 절에 설명된 방법 크기를 줄일 수 있습니다.

참고: 이 쿼리 DBCC EXTENTINFO 기능에 의존하여 명령. 기능이 변경될 수 있거나 Microsoft SQL Server의 향후 버전에서 경우에도 제거할 수 있으므로 이 상황 외부에서 DBCC EXTENTINFO 명령을 사용하지 마십시오.

참조

자세한 내용은 Microsoft 기술 자료 문서를 보려면 해당 자료의 문서를 참조하십시오.
272220FIX: 올바르게 회수했습니다 없음 TEXT/IMAGE 데이터 저장소 공간
308627FIX: 텍스트 또는 이미지 데이터 데이터베이스와 DBCC SHRINKDATABASE 또는 DBCC SHRINKFILE 확장 있다

속성

기술 자료: 324432 - 마지막 검토: 2005년 12월 9일 금요일 - 수정: 5.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
키워드:?
kbmt kbprb KB324432 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com