Post List

2015년 1월 9일 금요일

MS-SQL DB 파일 이름,파일경로 변경

데이터베이스 관리
- DB파일 논리적, 물리적 이름, 파일경로 변경.
- 파일 및 파일 그룹 추가 및 삭제

데이터베이스의 논리적 이름 및 물리적 이름 변경방법에 대해서 알아본다. 또한 운영 상황에 따라 파일그룹을 추가하거나 삭제하는 방법을 알아 보도록 한다.

DB 파일 논리적 이름 및 물리적 이름 변경.

현업에서 빈번하게 사용하지는 않지만 (지극히 주관적인 생각이다.) 개발 환경이나 테스트 환경에서 DB파일의 논리적 이름이나 물리적 이름 및 경로를 수정하여야 할 때 사용할 수 있다. SSMS와 쿼리문을 이용하여 변경하는 방법을 알아 보도록 하자.

(MSDN 참고:


1. DB 파일 논리적 이름 변경.

-SSMS 이용하기.
SSMS를 실행하여 논리적 이름을 변경할 DB를 선택한다.
마우스 오른쪽 버튼을 클릭하여 [속성] –[파일]을 선택한다.



[파일] 탭에서 논리적 이름을 변경한다.

Test_DB, TestDB_log KSW_DB, KSW_DB_log로 변경해 본다.



변경을 이름을 입력하고 [확인]을 클릭한다.

정상적으로 변경되었는지 확인하여 보자.

쿼리입력창에서 sp_helpdb 디비명 하여 정보를 확인. 또는 속성창을 이용하여 확인하자.



정상적으로 변경된 것을 확인 할 수 있다.

-쿼리 이용하기.
구문
sp_helpdb Test_db --현재 논리적 이름 확인

ALTER DATABASE Test_DB
       MODIFY FILE (
       NAME = Test_DB, --현재 논리적 데이터명
       NEWNAME = KSW_DB) --변경할 논리적 데이터명
GO

ALTER DATABASE Test_DB
       MODIFY FILE(
       NAME = Test_DB_log, --현재 논리적 로그명
       NEWNAME = KSW_DB_log) -- 변경할 논리적 로그명
go

sp_helpdb Test_DB  



2. DB파일 물리적 이름 변경 및 파일 경로 변경.

- SSMS 이용하기.
SSMS에서는 물리적 이름 변경 및 파일 경로는 수정 할 수 없다.



- 쿼리 이용하기.
데이터베이스의 물리적 이름 변경 및 파일 경로는 변경하려면 데이터베이스의 상태가 오프라인 이어야 한다.

1) 데이터베이스 오프라인 하기.
- SSMS이용하기.





- 쿼리 이용하기.
ALTER DATABASE Test_DB set OFFLINE
GO

새로고침을 하여 오프라인이 되었음을 확인 하자.



2) 물리적인 파일명 및 경로 변경.
해당 데이터베이스가 오프라인지 확인 한 후 데이터 파일을 다른 곳으로 복사하여 파일 이름을 변경한다.



변경 쿼리를 입력하자.
ALTER DATABASE Test_DB
       MODIFY FILE
       (NAME = Test_DB,
       FILENAME = 'c:\Data\KSW_DB.MDF')
GO

ALTER DATABASE Test_DB
       MODIFY FILE
       (NAME = Test_DB_log,
       FILENAME = 'c:\Data\KSW_DB_log.LDF')
GO




데이터베이스를 온라인 시키고 정보가 변경되었는지 확인 하자.
ALTER DATABASE Test_DB set ONLINE
go

sp_helpdb Test_DB




파일 및 파일 그룹 추가 및 삭제.

(MSDN 참고:

지난 데이터베이스 생성 강좌에서 한번 다룬 바 있다. 데이터베이스 생성시 파일 그룹을 설정하는 것과 사용방법은 비슷하다.
현업에서는 디스크 및 데이터 분포에 따른 데이터의 분산효과를 위하여 여러 개의 파일 그룹을 만들어서 사용한다. 이미 데이터베이스가 운용 중 이라도 수정 할 수 있다.

- SSMS 이용하기.
1) 파일 추가 / 제거
[속성] –[파일] 탭에서 [추가] 버튼을 클릭하여 파일을 추가한다.
파일을 추가 할 때 그룹이 여러 개 있다면 어느 그룹에 파일을 생성 할 것인지 선택한다.
제거는 해당 파일을 선택 후 제거 버튼을 선택한다.
기본 데이터파일과 로그 파일은 삭제되지 않는다.



2) 파일 그룹 추가.
[속성] –[파일그룹] 탭에서 [추가] 버튼을 클릭하여 파일그룹을 추가한다.
파일 그룹 제거는 해당 그룹을 선택후 제거 버튼을 선택한다.
기본 그룹인 PRIMARY 는 삭제 되지 않는다. 또한 해당 그룹에 데이터베이스 개체를 가지고 있어도 삭제 되지 않는다.



- 쿼리 이용하기.
1) 파일 추가
--데이터 파일 추가
ALTER DATABASE Test_DB
ADD FILE
       (NAME = Test_DB_2,
       -- 물리적 파일이 생성될 경로 파일 이름 지정.
       FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Test_DB_2.NDF',
       SIZE = 10MB, --초기 데이터 파일 크기
       MAXSIZE = 50MB, --최대 데이터 파일 크기
       FILEGROWTH = 1MB -- 1 증가 크기
       )
       TO FILEGROUP [PRIMARY] --PRIMARY 그룹에 생성
      
--데이터 로그 추가
ALTER DATABASE Test_DB
ADD LOG FILE
       (NAME = Test_DB_log_2,
       -- 물리적 파일이 생성될 경로 파일 이름 지정.
       FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Test_DB_log_2.LDF',
       SIZE = 10MB, --초기 로그 파일 크기
       MAXSIZE = 50MB, --최대 로그 파일 크기
       FILEGROWTH = 1MB -- 1 증가 크기
       )
       TO FILEGROUP [PRIMARY] --PRIMARY 그룹에 생성
      
sp_helpdb Test_DB



2) 파일 삭제
-- 파일 삭제
ALTER DATABASE Test_DB
REMOVE FILE Test_DB_2 --데이터 파일의 논리명
go

ALTER DATABASE Test_DB
REMOVE FILE Test_DB_log_2 --데이터 파일의 논리명
go


sp_helpdb Test_db




2) 파일 그룹 추가
--파일 그룹 추가
ALTER DATABASE Test_DB
ADD FILEGROUP SECOND --SECOND 파일 그룹 생성

exec sp_helpfilegroup; -- <-- 파일 그룹 확인 하는 명령어.




3) 파일 그룹 삭제
--파일 그룹 삭제
ALTER DATABASE Test_DB
REMOVE FILEGROUP SECOND --SECOND 파일 그룹 삭제

exec sp_helpfilegroup;

4) 파일 그룹 속성 변경
--파일 그룹 속성 변경
ALTER DATABASE Test_DB
MODIFY FILEGROUP SECOND READONLY --읽기전용으로 변경




파일 그룹의 속성을 변경하기 위해서는 해당 파일 그룹에 하나 이상의 파일이 존재하여야 한다.


이번 주제는 파일 추가 및 삭제 그리고 데이터 파일의 위치 변경, 파일 그룹의 추가와 삭제에 대하여 알아 보았다.

파일그룹은 디스크의 구성에 따라 적절하게 사용하면 많은 성능상의 이점을 가져 온다.



예를들면 데이터 파일과 인덱스 파일을 다른 그룹으로 나누어 각각의 디스크를 활용한다면 IO에 대한 분산을 줄이고 보다 나은 성능을 발휘 할 것이다.