2007~2011/SQL Server2011. 11. 22. 10:20

SQL Server 2008 R2 환경에서 SSMS 를 사용하여 테이블을 다른 파일그룹으로 이동하는 방법에 대해서 아래와 같이 정리하였습니다.


[시나리오]
LAIGO 데이터베이스에 FG1 파일그룹을 생성합니다. PRIMARY 파일그룹에 포함되어 있는 T1 테이블을 SSMS 를 사용하여 FG1 파일그룹으로 이동하는 절차입니다.

-- 데이터베이스 생성 시, FG1 파일 그룹 추가 생성
CREATE DATABASE [LAIGO]
ON PRIMARY
 (NAME = N'LAIGO_DATA',
  FILENAME = N'D:\SQL\DATA\LAIGO.MDF'),
 
FILEGROUP [FG1]
 (NAME = N'LAIGO_DATA_01', FILENAME = N'D:\SQL\DATA\LAIGO_DATA_01.NDF')
LOG ON
 (NAME = N'LAIGO_LOG',
  FILENAME = N'D:\SQL\DATA\LAIGO_LOG.LDF')
GO

-- 테이블 생성 및 데이터 입력
USE LAIGO
GO
CREATE TABLE T1 (
 COL1 INT
)
INSERT INTO T1 VALUES (1), (2), (3)

-- 테이블이 저장된 파일 그룹 확인
SP_HELP T1
Data_located_on_filegroup
-----------------------------
PRIMARY


 

단계 1
SSMS - 개체 탐색기 - LAIGO - Tables - dbo.T1 - Design




단계 2
테이블 선택 후 '보기' - '속성 창(F4)' - 파일 그룹 전환(PRIMARY 에서 FG1 선택)




변경 내용 저장할 수 없음 오류 발생
"다시 만들 수 없는 테이블을 변경했거나 [테이블을 다시 만들어야 하는 변경 내용 저장 사용 안 함] 옵션을 설정했습니다."



단계 3
Tools - Options - Designers - Prevent saving changes that require table re-creation 선택 해제
(테이블을 다시 만들어야 하는 변경 내용 저장 안 함)



이후 현재 테이블 변경사항을 저장한 뒤 sp_help 저장 프로시저로 해당 테이블 정보를 확인하면 T1 테이블의 파일그룹이 변경된 것을 확인할 수 있습니다.

물론 내부적으로는 Temp_T1 임시 테이블을 생성한 뒤 INSERT INTO 명령으로 기존 테이블의 데이터를 삽입하는 처리를 진행하게 됩니다. 단일 테이블의 경우 위와 같은 방법으로 변경 가능하며 다수의 테이블의 파일그룹을 변경할 때는 클러스터 인덱스 생성 또는 제약조건의 MOVE TO 옵션을 사용하여 이동을 시도해 볼 수 있습니다.


작성자 : Lai Go / 작성일자 : 2011.11.22

Posted by Lai Go