본문 바로가기

Programming/Microsoft SQL Server

파일그룹에 인덱스생성 후 삭제관련 문제

The filegroup '???" cannot be removed bacause it is not empty.

 

특정 파일 그룹에 인덱스를 생성한뒤 어떠한 이유에서 해당 인덱스를 삭제한 후 사용중이던 파일그룹더 같이 삭제하려고 하는 경우에 위와 같은 오류를 내면서 파일그룹이 삭제되지 않는 경우가 있습니다. 이런 경우 우선 해당 파일그룹을 사용중인 개체를 확인하도록 합니다.

Select t.name as table_name, i.name as index_name, ds.name as data_space_name, ds.type_desc, ps.name as partition_scheme_name
From sys.tables t join sys.indexes i
On t.object_id = i.object_id
join sys.data_spaces ds
On i.data_space_id = ds.data_space_id
Left Join sys.partition_schemes ps
On ps.data_space_id = ds.data_space_id;

테이블이 확인되면 해당 테이블에서 사용중인 인덱스와 같은 요소를 확인합니다. 인덱스를 삭제했다면 인덱스가 확인되지 않을 텐데 그렇다면 일단 임의의 인덱스를 생성합니다. 그리고 해당 인덱스의 속성을 확인해 Storage부분에서 Filegroup의 값을 확인합니다.

 

 

별도로 파일그룹을 지정하지 않았는데도 해당 인덱스가 삭제하려는 파일그룹에 소속된 상태라면 이걸 다른 파일그룹으로 변경합니다.

 

그리고 다시 파일그룹삭제를 시도하면 정상적으로 삭제됨을 확인할 수 있습니다.