본문 바로가기

DBMS/SQL Server (MS-SQL)

[SQL Server / MS-SQL] Generate Scripts 이용하여 DB 복사/이관하기

반응형

 

 


 

 

데이터베이스를 복사/이관하는 방법이 여러개 있다.

보통 간단하게 DB 를 백업하고 복원하는 식으로 진행하였는데 이번 복사 건은 Azure MI (A 서버) DB -> Azure SQL Database (B 서버) DB 로 복사해야하는 건으로 백업 및 복원이 불가하였다. 

 

그래서 이번에는 SSMS 의 Generate Scripts 를 이용하여 복사해보려고 한다.

 

 

1. Tasks > Generate Scripts... 선택

 

 

2. 복사/이관을 원하는 object 선택

Script entire database and all database objects : 전체 objects 복사

Select specific database objects: 선택한 objects 만 복사

 

나는 Users 정보는 빼고 모두 복사하려고 한다.

(tables ,views, SP, UDF, Users, Database Roles, DDL Triggers, Shemas 등 을 선택해서 복사할 수 있다.)

 

 

 

3. Advanced > Types of data to script > Schema and data 로 변경

데이터를 복사하기위해서 옵션을 변경해주어야한다.

안그러면 기본은 Schema only 라 Schema 만 복사 된다.

 

 

이렇게 실행하면 해당 데이터베이스의 복사 script 가 저장되고,

해당 script 를 복사하려는 서버에서 실행하면 된다.

 

단, object 를 선택해서 복사할 경우 Sequences 값은 복사가 안된다.

그래서 이것도 별도로 스크립트화하여 이관해야한다.

 

Object Explorer 에서 Sequences 를 선택 후 F7 을 누르면 오른쪽에 Object Explorer Details 이라는 창이 뜬다.

시퀀스 목록인데 복사하려는 시퀀스를 선택 후 Script 를 생성하면 스크립트를 복사할 수 있다.

 

 

요 복사한 스크립트도 복사하려는 DB 에서 실행해주면 된다.

 

이 경우 Sequences 가 모두 1 로 초기화되기 때문에, 수동으로 변경해주어야 한다.

-- sequence 현재 값 조회
select name, current_value from sys.sequences order by current_value desc;

-- sequence 값 변경
alter sequence [Sequence명] restart with [Seq값];

 

 

 

그리고 원하는 계정을 생성하고, 원하는 role 혹은 필요한 권한을 지급하면 된다.

-- user_dba 라는 계정 생성
CREATE USER [user_dba] FOR LOGIN [user_dba] WITH DEFAULT_SCHEMA=[dbo]
GO

-- user_dba 에 db_owner ROLE 부여
ALTER ROLE [db_owner] ADD MEMBER [user_dba]
GO

 

 

끝!

 

반응형