SSMS를 통한 데이터베이스 이름 변경

0. 현재 변경하려는 데이터베이스를 반드시 single_user 모드로 변경하기

USE [master]

-- DB 단일 사용자 모드(Single User mode)로 변경
-- 'WITH ROLLBACK IMMEDIATE' : 이 ALTER문이 발생하는 도중 생기는 다른 트랜잭션들은 모두 즉시 롤백하라는 옵션
ALTER DATABASE [데이터베이스명]
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE

-- 작업 완료 후 DB를 다시 원상태(Multi User mode)로 변경
ALTER DATABASE [데이터베이스명]
SET MULTI_USER

1. 데이터베이스 이름 변경

-- 만약 현재 변경하려는 데이터베이스가 특정 SQL User에서 default database로 설정되어 있다면,
-- 아래 쿼리문 수행하여, default database 명 먼저 변경하기.
-- 그렇지 않으면, 4064 에러(Cannot open u ser default database) 뜸
USE [master]
ALTER LOGIN [SQL Login Name] WITH DEFAULT_DATABASE=[변경하려는 데이터베이스 이름]


-- 데이터베이스 이름 변경
ALTER DATABASE [현재 데이터베이스 이름]
MODIFY NAME = [변경되는 데이터베이스 이름]

-- SP로도 가능하다.
EXEC sp_renamedb '현재 데이터베이스 이름', '변경되는 데이터베이스 이름'

 


논리적 파일명 또는 물리적 데이터 파일명을 변경하기 전에 다음 쿼리를 수행하여, 현재 설정되어 있는 논리적 파일명 및 물리적 데이터 파일명을 어딘가에 반드시 적어두자!

-- 현재 데이터베이스의 Logical File Name 확인 방법
USE [확인하려는 데이터베이스명]
SELECT FILE_ID
    , [Logical File Name] = name
    , [Physical File Name] = physical_name
FROM sys.database_files

-- 위 결과 복사해두기.

 

2. 물리적 데이터 파일명(.mdf 또는 .ldf) 변경

2.1. Backup 및 Restore(복원)을 이용한 방법

이 방법은 이미 백업파일이 존재하고, 해당 파일로 Restore를 하는 과정에서 변경하고 싶을 때 사용하면 좋은 방법이다.

-- 해당 백업파일의 Logical Name 확인
RESTORE FILELISTONLY 
FROM DISK=N'백업파일 절대경로'

-- 해당 백업파일로 복원하면서 저장될 physical 파일 이름을 변경하는 방법
RESTORE DATABASE [복원하려는 데이터베이스명]
FROM DISK = N'백업파일 절대경로'
WITH FILE = 1
    , STATS = 10
    , RECOVERY
    , REPLACE
    , MOVE N'MDF Logical Name' TO N'바뀔 Physical .mdf 파일 디렉토리'
    , MOVE N'LDF Logical Name' TO N'바뀔 Physical .ldf 파일 디렉토리'

 

2.2. 데이터베이스 Detach/Attach 를 이용한 방법

데이터베이스 Detach(분리)란, 데이터 파일을 새로운 디스크로 옮기는 등의 작업이 필요할 경우, 해당 DB의 Physical 파일은 그대로 보존하면서, 해당 DB에 대한 유저 Access는 차단하는 방법이다. 즉, 해당 DB를 SQL 인스턴스에서 떼어내는 방법이다.

데이터베이스 Detach를 수행할 경우, database file information, status information 등의 sys.databases에서 볼 수 있는 모든 metadata가 삭제되므로, 이 점을 주의해야 한다.

-- 해당 DB 분리(Detach) 수행
USE [master]
EXEC SP_DETACH_DB '데이트베이스명', 'TRUE'

-- 해당 데이터베이스의 파일명 또는 디렉토리를 OS 내에서 변경한다.

-- 해당 DB 다시 연결(Attach) 수행
USE [master]
EXEC SP_ATTACH_DB '데이터베이스명', '변경된 .mdf 파일 디렉토리', '변경된 .ldf 파일 디렉토리'

-- 해당 DB Attach 할 때 .mdf 파일만 연결하기.
EXEC SP_ATTACH_SINGLE_FILE_DB '데이터베이스명', '변경된 .mdf 파일 디렉토리'

3. 논리적 파일명 변경

USE [변경하려는 데이터베이스 이름]

-- 데이터 파일과 로그 파일이 각각 다르게 설정되어 있으므로, 쿼리를 각각 수행해줘야 한다.
-- .mdf에 대한 logical name 변경
ALTER DATABASE [변경하려는 데이터베이스 이름]
MODIFY FILE (
    NAME = '기존 Logical File Name'
    , NEWNAME = '바뀔 Logical File Name'
)

-- .ldf에 대한 logical name 변경
ALTER DATABASE [변경하려는 데이터베이스 이름]
MODIFY FILE (
    NAME = '기존 Logical File Name'
    , NEWNAME = '바뀔 Logical File Name'
)

 


참고

https://learn.microsoft.com/ko-kr/sql/relational-databases/databases/rename-a-database?view=sql-server-ver16

 

데이터베이스 이름 바꾸기 - SQL Server

데이터베이스 이름 바꾸기

learn.microsoft.com

 

https://dbrang.tistory.com/106

 

[2k] 논리적 파일명 및 물리적 파일명 바꾸기

/********************************************************************************************** -- Title : [2k] 논리적 파일명 및 물리적 파일명 바꾸기 -- Reference : dBRang.com -- Key word : alter database, restore database, sp_detach_db ***

dbrang.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기