-
SELECT INTO 와 FILE GROUPSQL Server 2011. 6. 14. 18:06
안녕하세요. 이스트럭(강동운) 입니다. ^^
오늘 포스팅의 주제는.. 바로 SELECT INTO 입니다.
SELECT INTO시에 원하는 파일그룹으로 복사본 테이블을 다른 파일 그룹으로 넘기는 방법은 어떤게 있을까요??..
결론부터 말씀드리면.. 데이타베이스의 기본 파일그룹을 변경하면 됩니다.
간단한 예제를 한번 살펴보시죠~!
use tempdb
go
if exists (select * from sys.sysdatabases where name = 'testdb')
begin
alter database testdb set single_user with rollback immediate;
drop database testdb
end
go
--//testdb 생성
create database testdb
go
use testdb
go
--test 테이블생성
create table test(idx int not null)
go
--기본키생성
alter table test
add constraint test_pk primary key(idx)
go
-- SQL 2008이라면...
insert into test values(1),(2),(3)
-- SQL 2005 이하라면..
-- insert into test values(1); insert into test values(2); insert into test values(3);
go
sp_help test
데이터베이스를 기본적으로 생성하면 PRIMARY FILE GROUP이 생성이 되며, 기본 값으로 설정이 됩니다.
여기서 파일그룹을 추가해보도록 하겠습니다.
ALTER DATABASE testdb
ADD FILEGROUP SECONDARY
ALTER DATABASE testdb
ADD FILE
(
NAME = testdb_Secondary,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\testdb.ndf',
SIZE = 1,
FILEGROWTH = 1MB
)
TO FILEGROUP SECONDARY
GO
그리고 나서 한번 SELECT INTO 를 써서 테이블을 복사해보겠습니다.
select * into test2 from test
go
sp_help test2
그렇다면.. 2번째 생성한 FILE GROUP으로 SELECT INTO를 하려면 어떻게 해야할까요?
바로 기본 파일그룹 변경입니다.
ALTER DATABASE testdb
MODIFY FILEGROUP SECONDARY DEFAULT;
GO
select * into test3 from test
go
sp_help test3
저도 이번 언플러그드 세미나때 알게 되었지만..
PRIMARY FILE GROUP에는 데이터를 저장하지 않는 것이 좋습니다.
(PRIMARY FILE GROUP에는 시스템 테이블정보만 할당해서 사용하도록 합시다!!)
실제 데이터 그리고 인덱스는 파일그룹을 추가해서 다른 NDF 파일에 저장하는 것이 여러모로 좋다고 합니다.
감사합니다.