2009-07-07 3 views
1

하나의 큰 테이블이있는 SQL 2005 데이터베이스가 있습니다. 테이블에서 일부 항목을 제거하기 위해 DELETE를 실행했으며 공간을 OS로 다시 비 웁니다.SQL 2005 데이터베이스에서 공간을 되 찾으려는 시도

나는 다음과 같은 명령

DBCC SHRINKDATABASE (MyDB, TRUNCATEONLY); 
DBCC SHRINKFILE (MyTable, TRUNCATEONLY); 

을 시도하고 나는 또한 데이터베이스 크기를 증가 재 구축

ALTER INDEX [IX_Clustered] ON [dbo].[MyTable] REBUILD WITH (PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF) 

축소 명령은 효과와 인덱스 없었다 다음 명령으로 클러스터 된 인덱스를 재 구축 한 35GB (데이터베이스 1.5TB).

그래서 나는 실망합니다. 사용하지 않는 데이터베이스 공간을 되 찾으려면 무엇을해야합니까?

편집 : 로그 파일에 문제가 없습니다. 주 데이터베이스 .MDF 파일이 너무 큽니다.

편집 2 :

rows  reserved   data    index_size   unused 
----------- ------------------ ------------------ ------------------ ------------------ 
1031649352 1543899648 KB  1481718624 KB  54444664 KB  7736360 KB 

답변

0

당신이 당신의 로그 파일 크기를 확인 했 : 여기에 의 결과가 MyTable에을 sp_spaceused를인가? 테이블이 여전히 있는지/인덱스가 여전히 많은 공간을 차지하고 있는지 확인하기 위해 공간 사용을 시도 했습니까?

+0

다른 드라이브에 있지만 문제가 발생하지 않습니다. .MDF 파일 만 너무 큽니다. –

+0

OK - 테이블이 여전히/indexes가 여전히 많은 공간을 차지하고 있는지 보려면

공간 사용을 시도 했습니까? – Adamski

+0

나는 그것을 지금하고 질문에 결과를 추가했다. –

1

DBREINDEX를 사용하여 다시 인덱싱을 시도하고 통계를 업데이트 한 다음 축소하면 나에게 맞는 트릭이라고 생각합니다.

DBCC DBREINDEX ('?', ' ', 80) 
GO 
EXEC sp_updatestats 
GO 
+0

또한 UI에서 데이터베이스 축소 명령을 사용해 보셨습니까? –

+0

DBCC DBREINDEX ('?', '', 80) 명령으로 인해 70GB의 .MDF 파일이 생성되어 실패했습니다. ( –

+0

유망하지 않습니다 :) 대체 하시겠습니까? 너의 테이블 이름은? DBCC_DBREINDEX를 사용하여 나를 위해 일했습니다. 데이터의 90 %를 삭제 한 큰 데이터베이스가 있었는데 DBCC_DBREINDEX를 실행 한 다음 축소하면 데이터 크기가 줄어 듭니다. –

0

LOB 데이터, 즉 TEXT, NTEXT, IMAGE 또는 XML 데이터 유형을 삭제 했습니까?

LOB 데이터를 삭제 한 경우 테이블을 재 빌드하여 공간을 확보해야하는 경우가 있습니다.

사실, 방금 수치를 보았을 때 - 공간의 99 %가 데이터 + 색인에 의해 차지 - 당신이 되찾기 위해 노력하고있는 여유 공간은 어디입니까?

관련 문제