데이터베이스를 복사/이관하는 방법이 여러개 있다.
보통 간단하게 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
끝!
'DBMS > SQL Server (MS-SQL)' 카테고리의 다른 글
[SQL Server / MS-SQL] 특정 테이블의 페이지 확인하기 (DBCC IND, DBCC PAGE) (0) | 2024.05.22 |
---|---|
[SQL Server / MS-SQL] 페이지 및 익스텐트 아키텍처 (FPS, GAM, SGAM, IAM, BCM, DCM) (0) | 2024.05.20 |
[SQL Server / MS-SQL] MI database properties error (subquery returned more than 1 value.) (0) | 2023.02.28 |
[SQL Server / MS-SQL] MS-SQL 에서 MySQL Linked Server 연결 (0) | 2022.09.15 |
[SQL Server / MS-SQL] 특정 IP 주소별 국가(코드) 조회 (0) | 2022.08.02 |