띵유로그

[MSSQL] SQL Server 상하위 버전간 대용량 데이터베이스 복사 본문

데이터베이스

[MSSQL] SQL Server 상하위 버전간 대용량 데이터베이스 복사

띵유 2020. 8. 21. 12:19
반응형

MSSQL
상위버전 데이터베이스 내용을 하위 버전으로 복사
1. 스크립팅을 통해 스키마먼저 만든다.
2. 오픈쿼리를 통해 select * 후 insert 한다.

데이터베이스 생성 스크립트(스키카, 데이터 포함)를 만들었다.
그런데 데이터 용량이 너무 많아 시간이 너무 오래걸리고 drive 용량도 많이 필요했다. 
그래서 스키마만 스크립트를 통해 생성 후 데이터는 조회후 바로 insert 하는 코드를 짰다.(아래)
//데이터베이스 내 모든 테이블 명 조회 후 커서를 통해 접근하여 오픈쿼리로 다른 서버에서 읽어옴.
// 타켓 서버에 연결 후  아래 스크립트 실행 필요

DECLARE
@INDEX INT,
@NAME varchar(100),
@str varchar(500),
@sql varchar(500),
@srcsever varchar(100),
@istname varchar(100)

SET @INDEX=0;
SET @srcsever='[source 서버명]'--소스 서버
SET @istname='데이터베이스명'--데이터베이스명

DECLARE CUR CURSOR FOR 
select TABLE_NAME from INFORMATION_SCHEMA.TABLES 

open cur
fetch next from cur into @NAME
select  @NAME;

while @@FETCH_STATUS=0
begin
set @INDEX = @INDEX +1

select @NAME
set @str=@istname+'.dbo.'+@NAME
set @sql='insert into '+@str+' select * from openquery('+@srcsever+ ',''select * from '+@srcsever+'.'+@str+''')'
exec(@sql)

FETCH NEXT FROM CUR INTO @NAME
END

CLOSE CUR
DEALLOCATE CUR
반응형
Comments